You can subscribe to this list here.
2007 |
Jan
(2) |
Feb
(24) |
Mar
(7) |
Apr
(20) |
May
|
Jun
(5) |
Jul
|
Aug
(3) |
Sep
(4) |
Oct
(14) |
Nov
(6) |
Dec
(16) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(3) |
Feb
(8) |
Mar
(5) |
Apr
(17) |
May
(10) |
Jun
(5) |
Jul
(16) |
Aug
(1) |
Sep
(1) |
Oct
(8) |
Nov
|
Dec
(2) |
2009 |
Jan
(6) |
Feb
|
Mar
(6) |
Apr
(10) |
May
(5) |
Jun
(7) |
Jul
(20) |
Aug
(61) |
Sep
(30) |
Oct
(37) |
Nov
(48) |
Dec
(42) |
2010 |
Jan
(35) |
Feb
(29) |
Mar
(29) |
Apr
(36) |
May
(41) |
Jun
(70) |
Jul
(120) |
Aug
(63) |
Sep
(45) |
Oct
(33) |
Nov
(88) |
Dec
(77) |
2011 |
Jan
(83) |
Feb
(81) |
Mar
(13) |
Apr
(5) |
May
(13) |
Jun
(38) |
Jul
(11) |
Aug
(53) |
Sep
(18) |
Oct
(12) |
Nov
(45) |
Dec
(8) |
2012 |
Jan
(5) |
Feb
(28) |
Mar
(7) |
Apr
(18) |
May
(56) |
Jun
(39) |
Jul
(31) |
Aug
(6) |
Sep
(22) |
Oct
(14) |
Nov
(32) |
Dec
(9) |
2013 |
Jan
(12) |
Feb
(51) |
Mar
(19) |
Apr
(36) |
May
(12) |
Jun
(20) |
Jul
(20) |
Aug
(14) |
Sep
(6) |
Oct
(24) |
Nov
(27) |
Dec
(17) |
2014 |
Jan
(10) |
Feb
(25) |
Mar
(26) |
Apr
(22) |
May
(30) |
Jun
(15) |
Jul
(10) |
Aug
(19) |
Sep
(16) |
Oct
(44) |
Nov
(24) |
Dec
(25) |
2015 |
Jan
(1) |
Feb
(5) |
Mar
(21) |
Apr
(3) |
May
(8) |
Jun
(2) |
Jul
(1) |
Aug
(1) |
Sep
(12) |
Oct
(18) |
Nov
(4) |
Dec
(10) |
2016 |
Jan
(9) |
Feb
(9) |
Mar
(6) |
Apr
(4) |
May
(1) |
Jun
(8) |
Jul
(24) |
Aug
(1) |
Sep
(1) |
Oct
(6) |
Nov
(12) |
Dec
|
2017 |
Jan
|
Feb
(5) |
Mar
(4) |
Apr
(3) |
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2018 |
Jan
(2) |
Feb
|
Mar
(1) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2019 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
From: Vijay S. <vi...@sa...> - 2020-12-12 12:06:15
|
Any interest in this? There is, of course, a lot of need for scalable compute environments in Python, for machine learning. Using the (C) X10 runtime w bPython bindings could be very attractive. (Though we would want to consider extending runtime to work w/ K8…) e.g. Ray supports distributed reinforcement learning libraries, and can be used to set up multi-agent simulations, e.g. for markets. But instead of simulating 20 agents, it would be good to simulate 20,000!! Ray: https://docs.ray.io/en/master/serve/key-concepts.html https://docs.google.com/document/d/1lAy0Owi-vPz2jEqBSaHNQcy2IBSDEHyXNOQZlGuj93c/preview Reinforcement Learning in Ray https://docs.ray.io/en/master/rllib.html Use of Ray for multi-agent market simulation https://arxiv.org/abs/1911.05892 |
From: lukeg-adv <luk...@o2...> - 2019-03-27 01:05:35
|
Hi, I am looking for a way to start a Java programme on a computing cluster that uses SLURM for job submission. As far as I can tell I cannot ssh to its computing nodes, which rules out using SSHLauncher. After looking through the mailing list thought about using APGAS's NoLauncher for that task, i.e. starting a number of processes with srun and making each of them connect to one master process, using the command like (I have redacted the ip of master node that I use): srun -n 4 -N 4 java -cp "./lib/*:./build/libs/*" -Dapgas.places=4 -Dapgas.launcher=apgas.impl.N -Dapgas.verbose.launcher=true -Dapgas.master=10.10.10.10 test.Test. test.Test is a simple hello world programme, see the end of this post for its code. To my understanding, the srun command should start 4 APGAS processes, each on its own node, with one node accomodating master process. In fact the logs (the messages in the form of "[APGAS] New place starting at 10.10.10.10:5701" show that indeed 4 places are started. The problems I encounter: (1) the 4 processes start and this is my output: Hello from place(3) Hello from place(0) Hello from place(1) Hello from place(0) Hello from place(1) Hello from place(0) Hello from place(3) Hello from place(1) Hello from place(3) Hello from place(2) Hello from place(2) Hello from place(0) Hello from place(1) Hello from place(3) Hello from place(2) Hello from place(2) I am starting to learn APGAS and getting acquainted with its terminology, however shouldn't the programme print the message only 4 times, once for each place? (2) The programme fails to stop. After printing 16 lines of "Hello from..." messages, it just freezes. What is therefore a recommended way of running Java programme with APGAS library on a cluster with SLURM workload manager? Hello world code I used: public class Test { public static void main(String[] args) { finish ( () -> { for (final Place place : places()) { asyncAt(place, ()->System.out.println("Hello from " + here())); } }); } } Thanks for your answers! Best regards Łukasz |
From: Vijay S. <vjs...@gm...> - 2018-04-07 12:10:19
|
An old message. Reminds me though — anyone know of work on proving properties of X10 programs? > Begin forwarded message: > > From: Luke Ong <lo...@cs...> > Subject: Automatic verification of message-passing concurrency > Date: April 23, 2014 at 9:26:47 PM EDT > To: Vijay Saraswat <vjS...@gm...> > > Hi Vijay, > > Many thanks for the pointers on X10 and its model of message-passing concurrency. We will definitely look into it. > > As for the work that my group has been doing, a good place to start is probably the tool Soter > > http://mjolnir.cs.ox.ac.uk/soter/ <http://mjolnir.cs.ox.ac.uk/soter/> > > The tool itself is described in the AGERE! paper [1], and the theory behind it in the SAS 2013 paper [2]. A more recent theoretical development is a CONCUR 2013 paper [3]. A report of the latest development is in the set of slides [4]. > > [1] Emanuele D'Osualdo, Jonathan Kochems, Luke Ong: Soter: an automatic safety verifier for erlang. AGERE!@SPLASH 2012: 137-140 > > [2] Emanuele D'Osualdo, Jonathan Kochems, C.-H. Luke Ong: Automatic Verification of Erlang-Style Concurrency. SAS 2013: 454-476 > > [3] Jonathan Kochems, C.-H. Luke Ong: Safety Verification of Asynchronous Pushdown Systems with Shaped Stacks. CONCUR 2013: 288-302 > > [4] C.-H. Luke Ong: Automatic Verification of Message-Passing Concurrency. Seminar, Institute of Software, CAS, 24 April 2014. > > Best wishes, > > Luke |
From: Arun T c. <cs1...@sm...> - 2018-04-03 13:33:15
|
Dear All, I required few clarifications regarding X10 run-time environment variables X10_HOSTLIST and X10_HOSTFILE. Hello.x10 program: class Hello { public static def main(args:Rail[String]) { for(p in Place.places()) at(p) Console.OUT.println("Hello"); } } I tried to execute the above Hello.x10 program with distributed environment (c++) set up with X10 run-time variables as follows, *Case 1:* export X10_HOSTLIST=node1, node2 export X10_NPLACES=16 export X10_NTHREADS=2, the program executed and printed "Hello" 16 time. But, when run the same program with, *Case 2:* export X10_HOSTLIST=node1, node2 export X10_NPLACES=32 export X10_NTHREADS=2, the program throws the below error, *ERROR:*Launcher 14: Error launching place 30 on host "k2n01". Please verify hostnames are specified correctly. Launcher 9: Error launching place 19 on host "k2n01". Please verify hostnames are specified correctly. Launcher 11: Error launching place 23 on host "k2n01". Please verify hostnames are specified correctly. Launcher 10: Error launching place 22 on host "k2n01". Please verify hostnames are specified correctly. Launcher 5: Error launching place 12 on host "k2n01". Please verify hostnames are specified correctly. Launcher 6: tearing down remaining runtimes after waiting 3 seconds Launcher 6: Error launching place 13 on host "k2n01". Please verify hostnames are specified correctly. To summarize, I am getting "launching place" error when I increase the X10_NPLACES from 16 to 32. I also tried with one node (export X10_HOSTLIST=node1), faced the same error. *Case 3:* unset X10_HOSTLIST export X10_NPLACES=32 export X10_NTHREADS=2, the program executed and printed "Hello" 32 time. With one node by NOT using "X10_HOSTLIST", I am not getting the error. Please advise, how to fix the above error. Thanks. Arun T |
From: John R. <js...@gm...> - 2018-03-01 18:02:48
|
The subject says it all. Is there any software in X10 that implements Tensor Decompositions? --John |
From: David P G. <gr...@us...> - 2018-01-09 14:41:22
|
Jonas Posner <jon...@un...> wrote on 01/09/2018 04:50:10 AM: > > Hi all, > > I have just read the paper "Failure Recovery in Resilient X10" with > great interest and I would be very interested in the source code. Is it > available online? > > Best regards, > Jonas Posner > Hi Jonas, The code is all in the master branch of the respective X10 github repositories. We haven't done a formal release of X10 with the latest code yet, but if you grab the master branches of the repositories you should get it all. --dave |
From: Jonas P. <jon...@un...> - 2018-01-09 10:25:49
|
Hi all, I have just read the paper "Failure Recovery in Resilient X10" with great interest and I would be very interested in the source code. Is it available online? Best regards, Jonas Posner -- Jonas Posner Universitaet Kassel Fachbereich 16 Elektrotechnik/Informatik Fachgebiet Programmiersprachen/-methodik Wilhelmshoeher Allee 71-73 34121 Kassel, Germany Phone: +49 (0)561 804-6498 Fax: +49 (0)561 804-6219 mailto: jon...@un... www.uni-kassel.de |
From: Vivek S. <vs...@ri...> - 2017-07-31 23:23:59
|
Dear all, Hope that the summer is going well for you. I thought I’d share with you the fact that a new 3-course specialization on Parallel, Concurrent, and Distributed Programming in Java, based on material from my on-campus undergraduate class at Rice, launched today on Coursera. Details are available at the following site: https://www.coursera.org/specializations/pcdp <https://www.coursera.org/specializations/pcdp>. Please feel free to check it out, and forward this information to anyone at your institution for whom this may be of interest. I’d very much welcome feedback on the material. Even though the course content is presented in the context of standard Java 8, you will undoubtedly see X10 influences in some of the material! Thanks, and best regards, Vivek Prof. Vivek Sarkar Professor of Computer Science E.D. Butcher Chair in Engineering, Rice University ASSISTANT: Annepha Hurlock, an...@ri..., +1-713-348-5186 EMAIL: vs...@ri... <mailto:vs...@ri...>, PHONE: +1-713-348-5304, FAX: +1-713-348-5930, HOME PAGE: http://vsarkar.rice.edu <http://vsarkar.rice.edu/> MAILING ADDRESS: Dept. of Computer Science - MS 132, Rice University, P.O. Box 1892, Houston, TX 77251, USA STREET ADDRESS (for Fedex/courier deliveries): Duncan Hall, Room 3131, Rice University, 6100 Main Street, Houston, TX 77005, USA |
From: Vijay S. <vi...@sa...> - 2017-07-04 09:55:39
|
Implemented in X10. ---- Improving the robustness and performance of parallel joins over distributed systems * Long Cheng <http://www.sciencedirect.com/science/article/pii/S0743731517302058#>^a <http://www.sciencedirect.com/science/article/pii/S0743731517302058#aff1>^,^b <http://www.sciencedirect.com/science/article/pii/S0743731517302058#aff2>^,^,, * Spyros Kotoulas <http://www.sciencedirect.com/science/article/pii/S0743731517302058#>^c <http://www.sciencedirect.com/science/article/pii/S0743731517302058#aff3>^,, * Tomas E. Ward <http://www.sciencedirect.com/science/article/pii/S0743731517302058#>^d <http://www.sciencedirect.com/science/article/pii/S0743731517302058#aff4>^,, * Georgios Theodoropoulos <http://www.sciencedirect.com/science/article/pii/S0743731517302058#>^e <http://www.sciencedirect.com/science/article/pii/S0743731517302058#aff5>^, https://doi.org/10.1016/j.jpdc.2017.06.016 Abstract High-performance data processing systems typically utilize numerous servers with large amounts of memory. An essential operation in such environment is the parallel join, the performance of which is critical for data intensive operations. In many real-world workloads, data skew is omnipresent. Techniques that do not cater for the possibility of data skew often suffer from performance failures and memory problems. State-of-the-art methods designed to handle data skew propose new ways to distribute computation that avoid hotspots. However, this comes at the expense of global collection of statistics, redundant computation, duplication of data or increased network communication. In this light, performance could be further improved by removing the dependency on global skew knowledge and broadcasting. In this paper, we propose a new method called PRPQ (partial redistribution & partial query), with targets for efficient and robust joins with large datasets over high performance clusters. We present the detailed implementation of our approach and compare its performance with current implementations. The experimental results demonstrate that the proposed algorithm is scalable and robust and can also outperform the state-of-the-art approach with less network communication, figures that confirm our theoretical analysis. To appear in Journal of Parallel and Distributed Computing, http://www.sciencedirect.com/science/article/pii/S0743731517302058 ----- An earlier version is at: https://pdfs.semanticscholar.org/e440/ad0a386b19df8a3091f37837779b2d2977dd.pdf |
From: David P G. <gr...@us...> - 2017-07-03 18:40:04
|
We are happy to announce the release of X10 and X10DT 2.6.1. The focus of the X10 2.6.1 release is improvements to Resilient X10. The release is available for download at http://x10-lang.org/releases/x10-release-261 The X10 2.6.1 Release Notes are appended. X10 Release 2.6.1 HIGHLIGHTS OF THIS RELEASE The focus of the X10 2.6.1 release is improvements to Resilient X10. Some highlights include: - Significant improvements to the performance of resilient finish - A new resilient store implemented in X10 - Improved standard library APIs for elasticity and non-shrinking recovery. - Enhancements to the x10.util.resilient.iterative package to exploit elasticity to support non-shrinking recovery. - Updating of all Resilient X10 sample programs and applications to showcase the improvements in Resilient X10. LIMITATIONS OF THIS RELEASE The size and index of arrays must be less than 2^31 with Managed X10. An attempt to allocate a longer array causes IllegalArgumentException. The following features described in the 2.6 language manual do not currently work and may be fixed in the subsequent releases: - Non-static type definitions as class or interface members (static type defs do work) The constraint solver used by X10 typechecker is known to be incomplete for situations in which a constraint implies an infinite number of distinct constraints. Additionally, the following features described in the language manual do not currently work with Native X10. - Non-final generic instance methods - Exception stack traces on Cygwin The generated C++ code requires g++ 4.2 or better to be compiled; we do almost all of our testing against g++ 4.4. + On Power/Linux and BG/Q, you may either use g++ 4.2 or better or xlC 11.1 or better. SUMMARY OF ISSUES RESOLVED IN THIS RELEASE Below is a summary of JIRA issues addressed for the X10 2.6.1 ** New Feature * [XTENLANG-3553] - Add method x10.lang.String.contains(String) * [XTENLANG-3554] - New method x10.Random.nextGaussian * [XTENLANG-3555] - X10 Launcher fails with buffer overflow if X10_HOSTFILE does not exist ** Bug * [XTENLANG-3498] - New place fails to connect to dead places * [XTENLANG-3552] - X10 reading from a file not as expected * [XTENLANG-3556] - x10rt_sockets: blocking_probe doesn't block after a Place is killed For the details of JIRA issues fixed in this release, see https://xtenlang.atlassian.net/secure/ReleaseNote.jspa?version=10600&projectId=10005 Please use the X10 JIRA to report bugs, after ensuring the problem is not already reported: https://xtenlang.atlassian.net/projects/XTENLANG/issues |
From: David P G. <gr...@us...> - 2017-04-25 17:33:27
|
CALL FOR PAPERS PAW17: The 2nd Annual PGAS Applications Workshop http://sourceryinstitute.github.io/PAW/ Held in conjunction with SC 17: The International Conference for High Performance Computing, Networking, Storage and Analysis http://sc17.supercomputing.org <http://sc17.supercomputing.org/> In cooperation with SIGHPC SUMMARY The race towards Exascale computing is on, and a lot of stress is put on researchers to break the boundaries of productivity and efficiency imposed by traditional programming models. Partitioned Global Address Space (PGAS) languages are an effective alternative, and the most promising path towards sustainable programming environments for exascale machines. Languages such as UPC, Fortran, Chapel, and X10 are now more widely available than ever, thanks to increased support from vendors and open-source communities. PGAS models also take the form of meta-languages and libraries, such as Unified Parallel C++ (UPC++), Co-Array C++, OpenSHMEM, MPI-3 and Global Arrays. These have the benefit of being integrated with existing languages, simplifying the learning curve for existing programmers. Significant improvements in the availability of PGAS compilers and support software have been achieved in the last few years; these open up more opportunities than ever for researchers and developers to test new strategies and port applications to more demanding requirements. Following on the success of PAW16, we invite you to take part in the second PGAS Application Workshop, and to join its vibrant and diverse community of researchers and developers. SCOPE AND AIMS The scope of the PAW workshop is to provide a forum for exhibiting case studies of PGAS programming models in the context of real-world applications as a means of better understanding practical applications of PGAS technologies. We encourage the submission of papers and talks detailing practical PGAS applications, including characterizations of scalability and performance, of expressiveness and programmability, as well as any downsides or areas for improvement in existing PGAS models. In addition to informing other application programmers about the potential that is available through PGAS programming, the workshop is designed to communicate these experiences to compiler vendors, library developers, and system architects in order to achieve broader support for PGAS programming across the community. We also specifically encourage submissions covering big data analytics, deep learning, and other novel and emerging application areas, beyond traditional scientific HPC domains. Topics include, but are not limited to: * Novel application development using the PGAS model. * Real-world examples demonstrating performance, compiler optimization, error checking, and/or reduced software complexity. * Applications from big data analytics, bioinformatics, and other novel areas. * Performance evaluation of applications running under PGAS. * Algorithmic models enabled by PGAS model. * Compiler and runtime environments. * Libraries using/supporting PGAS and applications. * Benefits of hardware abstraction and data locality on algorithm implementation. IMPORTANT DATES: * Submission Deadline: July 31, 2017 * Author Notification: September 1, 2017 * Camera Ready: October 1, 2017 * Workshop Date: November 13, 2017 SUBMISSIONS Submissions are solicited in two categories: a) Full-length papers presenting novel research results: Full-length papers will be published in the workshop proceedings in cooperation with SIGHPC. Submitted papers must be original work that has not appeared in, and is not under consideration for, another conference or a journal. Papers shall not exceed eight (8) pages including text, appendices, and figures. References are not included. b) Extended abstracts summarizing published/preliminary results: Extended abstracts will be evaluated separately and will not be included in the published proceedings; they are intended for timely communications of novel work that is going to be formally submitted elsewhere at a later stage, and/or of already published work that is nonetheless deemed appropriate for dissemination in this venue. Extended abstracts shall not exceed four (4) pages. Submissions shall be submitted through EasyChair (https://easychair.org/conferences/?conf=paw17); they must conform to ACM Guidelines (http://www.acm.org/publications/proceedings-template). Accepted full-length papers will be given longer presentation slots at the workshop; extended abstracts will be given shorter time slots. WORKSHOP CHAIR Karla Morris - Sandia National Laboratories ORGANIZING COMMITTEE * Bradford L. Chamberlain - Cray Inc. * Salvatore Filippone - Cranfield University * Costin Iuaca - Lawrence Berkeley National Laboratory * Bill Long - Cray Inc. PROGRAM COMMITTEE CHAIR and CO-CHAIR * Francesco Rizzi - Sandia National Laboratories (Chair) * Bill Long - Cray Inc. (Co-Chair) PROGRAM COMMITTEE * Bradford L. Chamberlain - Cray Inc. * Bert de Jong - Lawrence Berkeley National Laboratory * James Dinan - Intel * Salvatore Filippone - Cranfield University, UK * Jeff Hammond - Intel * Costin Iancu - Lawrence Berkeley National Laboratory * Karla Morris - Sandia National Laboratories * Nicholas Park - U.S. Department of Defense * Anton Shterenlikht - University of Bristol * Min Si - Argonne National Laboratory * Lauren L. Smith - U.S. Department of Defense * Yili Zheng - Google ADVISORY COMMITTEE * Katherine A. Yelick - Lawrence Berkeley National Laboratory * Damian W. I. Rouson - Sourcery Institute In case of questions please email us at: pa...@cr... |
From: David P G. <gr...@us...> - 2017-04-18 13:15:31
|
Vijay Saraswat <vi...@sa...> wrote on 04/13/2017 10:36:48 AM: > > By studying useful idioms in untyped languages, one can gain a better > understanding of the challenges faced in designing a good type system. > > Here is the classic union-find algorithm in Python. Turns out that using > just a single field at each node works fairly well. Assume each node has > a uniquely identifying index (an int). Initially the field is a set (of > cohorts), and eventually it transitions to an int (the index of the node > this one is merged into). > > For a strongly typed language this is the basic challenge of dealing > with typestate. There may be some leverage to be gained by designing a > system that admits only a bounded number of type transitions (in this > case, 2). > > (This "overlay" notion goes back to the 50s and 60s, when memory was in > short supply and reusing the same storage block in different ways at > different points in the algorithm made sense. We don't have that > motivation any more. For me, the motivation was simply clarity of the > code. By using *one* variable, I ensure that I do not have to manage > semantic invariants across multiple distinct variables, e.g. an > `in_cohort` in field and a `cohorts` int set field.) I think Swift would support this nicely via enums with associated values (effectively type-safe tagged unions). https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html --dave |
From: Vijay S. <vi...@sa...> - 2017-04-13 14:53:02
|
By studying useful idioms in untyped languages, one can gain a better understanding of the challenges faced in designing a good type system. Here is the classic union-find algorithm in Python. Turns out that using just a single field at each node works fairly well. Assume each node has a uniquely identifying index (an int). Initially the field is a set (of cohorts), and eventually it transitions to an int (the index of the node this one is merged into). For a strongly typed language this is the basic challenge of dealing with typestate. There may be some leverage to be gained by designing a system that admits only a bounded number of type transitions (in this case, 2). (This "overlay" notion goes back to the 50s and 60s, when memory was in short supply and reusing the same storage block in different ways at different points in the algorithm made sense. We don't have that motivation any more. For me, the motivation was simply clarity of the code. By using *one* variable, I ensure that I do not have to manage semantic invariants across multiple distinct variables, e.g. an `in_cohort` in field and a `cohorts` int set field.) def find_root(node0, nodes): """ The find in union find. nodes are dicts with fields index and cohorts. It is required that nodes[i]['index']==i. nodes[i]['cohorts'] is either an int index for some other node, or a set of indices. """ node0_idx = node0['index'] node = node0 while isinstance(node['cohorts'], int): node = nodes[node['cohorts']] node_idx = node['index'] assert node0_idx==node_idx or isinstance(node['cohorts'], set), ('Ugh. no cohort set!', node_idx, 'original node', node0_idx) return node def connected(nodes0, edge_fn): """ Return connected component in the graph whose list of nodes are given by nodes0. For any pair (x, y) of nodes edge_fn(x,y) should return True iff there is an edge. A connected component is a set of indices of the nodes in that component. e.g. connected([0,1,2,3], lambda x,y:True) ==> [{0,1,2,3}] connected([0,1,2,3], lambda x,y:False) ==> [{0},{1},{2},{3}] connected([0, 1, 2, 3], lambda x, y: x + y<= 2) ==> [{0,1,2},{3}] connected([0, 1, 2, 3], lambda x, y: x + y % 2 ==0) ==> [{0,2},{1,3}] """ # Key implementation decision: Keep just one field. Starts out as a set, becomes # an int when (the set associated with) this node is merged into another. # initialize with every node in its own cohort group. nodes = [{'node':nodes_[i], 'cohorts':set([i]), 'index':i} for i in range(len(nodes_))] for i in range(len(nodes)): root = find_root(nodes[i], nodes) root_idx = root['index'] for other in nodes[i+1:]: if edge_fn(node['node'], other['node']): other_root = find_root(other, nodes) if root_idx != other_root['index']: root['cohorts'] |= other_root['cohorts'] other_root['cohorts'] = root_idx result = [node['cohorts'] for node in nodes if isinstance(node['cohorts'], set)] return result |
From: David P G. <gr...@us...> - 2017-03-20 15:35:48
|
HI, One of our X10DT experts suggested that NPE means that X10DT can't find the X10 distribution because of a path issue. --dave Anchu R S <an...@gm...> wrote on 03/19/2017 01:09:57 AM: > > I am trying to set up Eclipse development environment to build and > debug X10DT. I followed the steps in [1] and could successfully > complete till Part 3 (All projects are now built successfully and do > not show any errors). However when I try to execute Hello.x10 within > the newly created X10DT Eclipse application I get a null pointer > exception. Following is the error log. > > > !ENTRY org.eclipse.core.jobs 4 2 2017-03-19 13:20:40.526 > !MESSAGE An internal error occurred during: "Launching Hello1". > !STACK 0 > java.lang.NullPointerException > at > org.eclipse.core.internal.runtime.Activator.getURLConverter (Activator.java: > 321) > at org.eclipse.core.runtime.FileLocator.resolve(FileLocator.java:227) > at > x10dt.core.utils.X10BundleUtils.getX10DistHostResource (X10BundleUtils.java:99) > at > x10dt.ui.launch.java.launching.X10LocalLaunchConfigDelegate.getX10DistHostLibDir (X10LocalLaunchConfigDelegate.java: > 50) > at > x10dt.ui.launch.java.launching.X10LaunchConfigurationDelegate.getX10DistributionFolder (X10LaunchConfigurationDelegate.java: > 606) > at > x10dt.ui.launch.java.launching.X10LaunchConfigurationDelegate.runCommand (X10LaunchConfigurationDelegate.java: > 197) > at > x10dt.ui.launch.java.launching.X10LaunchConfigurationDelegate.launch (X10LaunchConfigurationDelegate.java: > 111) > at > org.eclipse.debug.internal.core.LaunchConfiguration.launch (LaunchConfiguration.java: > 885) > at > org.eclipse.debug.internal.core.LaunchConfiguration.launch (LaunchConfiguration.java: > 739) > at > org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch (DebugUIPlugin.java: > 1039) > at org.eclipse.debug.internal.ui.DebugUIPlugin > $8.run(DebugUIPlugin.java:1256) > at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) > |
From: David P G. <gr...@us...> - 2017-03-20 13:50:55
|
Hi, Anchu R S <an...@gm...> wrote on 03/19/2017 01:09:57 AM: > > I am trying to set up Eclipse development environment to build and > debug X10DT. I followed the steps in [1] and could successfully > complete till Part 3 (All projects are now built successfully and do > not show any errors). However when I try to execute Hello.x10 within > the newly created X10DT Eclipse application I get a null pointer > exception. Following is the error log. I don't have any useful advice on the NPE > A preliminary search in google says that it was a known bug in > Eclipse, which got fixed in some version of Eclipse. The > documentation in [1] insists on using eclipse 4.4.2, so I have not > tried it with an newer version of eclipse. > The need for a very specific version of Eclipse is caused by X10DT's usage of PTP. It depends on what you want to accomplish, but if you are just looking for an Eclipse-based X10 source editor you could only install the x10dt.editor.feature. The editor feature gives you X10 source editing and basic compilation, but doesn't include the ability to build/launch on remote hosts. Because it doesn't include PTP, it is much less sensitive to Eclipse versions. Hope that helps, --dave |
From: Anchu R S <an...@gm...> - 2017-03-19 09:34:00
|
Hi All, I am trying to set up Eclipse development environment to build and debug X10DT. I followed the steps in [1] and could successfully complete till Part 3 (All projects are now built successfully and do not show any errors). However when I try to execute Hello.x10 within the newly created X10DT Eclipse application I get a null pointer exception. Following is the error log. !ENTRY org.eclipse.core.jobs 4 2 2017-03-19 13:20:40.526 !MESSAGE An internal error occurred during: "Launching Hello1". !STACK 0 java.lang.NullPointerException at org.eclipse.core.internal.runtime.Activator.getURLConverter( Activator.java:321) at org.eclipse.core.runtime.FileLocator.resolve(FileLocator.java:227) at x10dt.core.utils.X10BundleUtils.getX10DistHostResource( X10BundleUtils.java:99) at x10dt.ui.launch.java.launching.X10LocalLaunchConfigDelegate. getX10DistHostLibDir(X10LocalLaunchConfigDelegate.java:50) at x10dt.ui.launch.java.launching.X10LaunchConfigurationDelegate .getX10DistributionFolder(X10LaunchConfigurationDelegate.java:606) at x10dt.ui.launch.java.launching.X10LaunchConfigurationDelegate. runCommand(X10LaunchConfigurationDelegate.java:197) at x10dt.ui.launch.java.launching.X10LaunchConfigurationDelegate.launch( X10LaunchConfigurationDelegate.java:111) at org.eclipse.debug.internal.core.LaunchConfiguration.launch( LaunchConfiguration.java:885) at org.eclipse.debug.internal.core.LaunchConfiguration.launch( LaunchConfiguration.java:739) at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:1039) at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin .java:1256) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) A preliminary search in google says that it was a known bug in Eclipse, which got fixed in some version of Eclipse. The documentation in [1] insists on using eclipse 4.4.2, so I have not tried it with an newer version of eclipse. It will be a great help if someone could guide me to resolve this issue. The versions of various tools used are listed below. Java - 1.7 Eclipse - 4.4.2 SWTBot - 2.2.1 PDE and PTP were installed directly from Eclipse software update. [1] http://x10-lang.org/articles/169.html -- *Anchu R S* *MS Research Scholar* *IIT Madras* |
From: Anchu R S <an...@gm...> - 2017-03-19 08:10:05
|
Hi All, I am trying to set up Eclipse development environment to build and debug X10DT. I followed the steps in [1] and could successfully complete till Part 3 (All projects are now built successfully and do not show any errors). However when I try to execute Hello.x10 within the newly created X10DT Eclipse application I get a null pointer exception. Following is the error log. !ENTRY org.eclipse.core.jobs 4 2 2017-03-19 13:20:40.526 !MESSAGE An internal error occurred during: "Launching Hello1". !STACK 0 java.lang.NullPointerException at org.eclipse.core.internal.runtime.Activator.getURLConverter (Activator.java:321) at org.eclipse.core.runtime.FileLocator.resolve(FileLocator.java:227) at x10dt.core.utils .X10BundleUtils.getX10DistHostResource(X10BundleUtils.java:99) at x10dt.ui .launch.java.launching.X10LocalLaunchConfigDelegate.getX10DistHostLibDir(X10LocalLaunchConfigDelegate.java:50) at x10dt.ui .launch.java.launching.X10LaunchConfigurationDelegate.getX10DistributionFolder(X10LaunchConfigurationDelegate.java:606) at x10dt.ui.launch.java.launching.X10LaunchConfigurationDelegate. runCommand(X10LaunchConfigurationDelegate.java:197) at x10dt.ui .launch.java.launching.X10LaunchConfigurationDelegate.launch(X10LaunchConfigurationDelegate.java:111) at org.eclipse.debug.internal.core.LaunchConfiguration.launch( LaunchConfiguration.java:885) at org.eclipse.debug.internal.core.LaunchConfiguration.launch( LaunchConfiguration.java:739) at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch( DebugUIPlugin.java:1039) at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin .java:1256) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) A preliminary search in google says that it was a known bug in Eclipse, which got fixed in some version of Eclipse. The documentation in [1] insists on using eclipse 4.4.2, so I have not tried it with an newer version of eclipse. It will be a great help if someone could guide me to resolve this issue. The versions of various tools used are listed below. Java - 1.7 Eclipse - 4.4.2 SWTBot - 2.2.1 PDE and PTP were installed directly from Eclipse software update. [1] http://x10-lang.org/articles/169.html Regards, -- *Anchu R S* *MS Research Scholar* *IIT Madras* |
From: Vijay S. <vi...@sa...> - 2017-02-18 15:27:30
|
Curious if anyone is working on this. Google is investing a lot of effort in a domain specific compiler for linear algebra, to support TensorFlow. Might be useful for X10 to get bindings to TF, and look into hosting GML on top of TF. |
From: David P G. <gr...@us...> - 2017-02-09 13:18:52
|
Jheisson Argiro López Restrepo <ja...@op...> wrote on 02/08/2017 03:22:34 PM: > > Is the use of the SparsePlaceGroup class scalable? I need the solution > to work with a large number of nodes. For tens to hundreds of Places and typical uses of PlaceGroups it should be ok. The main scalability problem is that the Rail[Place] is stored explicitly in each SparsePlaceGroup object and operations like indexOf and contains do a linear search over that Rail[Place]. If it does become an issue, a possible fix would be to implement a new subclass of PlaceGroup that was specialized for dense ranges of Places (eg containing 200 Places from Place(10) to Place(209) that just stored Place (10) and the number 200). You could have more efficient storage and constant time implementations of indexOf and contains. The default implementation of PlaceGroup (PlaceGroup.SimplePlaceGroup) is close to this....but it assumes the dense range starts with Place(0). There is nothing "special" about PlaceGroup; user programs can define and use their own subclasses. > > I tried to make some like this: > > var headersGroup:PlaceGroup = PlaceGroup.make(configNodes.numElems_1); > > var explorersGroup:PlaceGroup = PlaceGroup.make(numExplorers); > This will make two PlaceGroups containing headersGroup: Place(0)...Place(configNodes.numElems_1-1) explorersGroup: Place(0)...Place(numExplorers-1) If you want the groups to not overlap, you will need to do like Josh's example where you create two Rails that contain the Places you want in each group and create a SparsePlaceGroup from each Rail. --dave |
From: Jheisson A. L. R. <ja...@op...> - 2017-02-09 05:45:54
|
Hi Josh, thak for your help !! Is the use of the SparsePlaceGroup class scalable? I need the solution to work with a large number of nodes. I tried to make some like this: var headersGroup:PlaceGroup = PlaceGroup.make(configNodes.numElems_1); var explorersGroup:PlaceGroup = PlaceGroup.make(numExplorers); val headNodes = PlaceLocalHandle.make[CPLSNode(CPLSOptionsEnum.NodeRoles.HEAD_NODE as Int)](headersGroup,() => NodeFactory.make(CPLSOptionsEnum.NodeRoles.HEAD_NODE as Int)); val explorersNodes = PlaceLocalHandle.make[CPLSNode(CPLSOptionsEnum.NodeRoles.EXPLORER_NODE as Int)](refsToPlaces, () => NodeFactory.make(CPLSOptionsEnum.NodeRoles.EXPLORER_NODE as Int)); I make this because i need instance diferent class in each PlaceGroup (CPLSOptionsEnum.NodeRoles.EXPLORER_NODE or CPLSOptionsEnum.NodeRoles.MASTER_NODE define the class). Then, i invoque the correspond closure: finish{ for(p in headersGroup) at (p) async{ headNodes().initialize(); } } finish{ for(p in explorersGroup) at (p) async{ explorersNodes().initialize(); } } But when i obtain the worker of each place, I see that some of the places have the same worker: Place(0)(Headers group). x10.lang.Runtime.Worker@0x1fd2a80 Place(1)(Headers group). x10.lang.Runtime.Worker@0x21e9d20 Place(0)(Explorers group). x10.lang.Runtime.Worker@0x1fd2a80 Place(1)(Explorers group). x10.lang.Runtime.Worker@0x21e9d20 Place(3)(Explorers group). x10.lang.Runtime.Worker@0x11b9d20 Place(2)(Explorers group). x10.lang.Runtime.Worker@0x1acbd20 Place(4)(Explorers group). x10.lang.Runtime.Worker@0x19a7d20 Thanks for your help, Succes !! --- Jheisson A. López R. On 2017-02-01 20:43, Josh Milthorpe wrote: > Hi Jheisson, > > you can use x10.lang.SparsePlaceGroup to create a PlaceGroup from a > specific subset of places. The method x10.xrx.Runtime.getName() gives > information about the process ID and hostname for a given place. For > example: > > // TestSparse.x10 > import x10.xrx.Runtime; > public class TestSparse { > public static def main(args:Rail[String]) { > val x = new SparsePlaceGroup([Place(0), Place(2)]); > val y = new SparsePlaceGroup([Place(1), Place(3)]); > finish for (place in x) at(place) { > Console.OUT.println(here + " " + > Runtime.getName() + " x"); > } > finish for (place in y) at(place) { > Console.OUT.println(here + " " + > Runtime.getName() + " y"); > } > } > } > > $ x10c TestSparse.x10 > $ X10_NPLACES=4 x10 TestSparse > Place(0) 673@localhost x > Place(2) 676@localhost x > Place(1) 675@localhost y > Place(3) 677@localhost y > > Cheers, > > Josh > > http://milthorpe.org [3] > > On 2 February 2017 at 07:10, Jheisson Argiro López Restrepo > <ja...@op...> wrote: > >> Hi everyone, >> I'm working with 2-4-2 X10 language version and I need to create >> two >> groups of places so I can handle them with two different >> placelocalhandles, but I have a question, when I do the following: >> >> var group1:PlaceGroup = PlaceGroup.make(2); >> var group2:PlaceGroup = PlaceGroup.make(2); >> >> I get 4 diferent places or only 2? how can I make sure that the >> second >> sentence don't points to the same places of the first sentence? Hos >> can >> I obtain some id of the hardware platform that its executed each >> place? >> >> Many Thanks !! >> >> -- >> Jheisson A. López R. >> >> > ------------------------------------------------------------------------------ >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, SlashDot.org! http://sdm.link/slashdot [1] >> _______________________________________________ >> X10-users mailing list >> X10...@li... >> https://lists.sourceforge.net/lists/listinfo/x10-users [2] > > > > Links: > ------ > [1] http://sdm.link/slashdot > [2] https://lists.sourceforge.net/lists/listinfo/x10-users > [3] http://milthorpe.org > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > > _______________________________________________ > X10-users mailing list > X10...@li... > https://lists.sourceforge.net/lists/listinfo/x10-users |
From: Josh M. <jos...@gm...> - 2017-02-02 01:43:18
|
Hi Jheisson, you can use x10.lang.SparsePlaceGroup to create a PlaceGroup from a specific subset of places. The method x10.xrx.Runtime.getName() gives information about the process ID and hostname for a given place. For example: // TestSparse.x10 import x10.xrx.Runtime; public class TestSparse { public static def main(args:Rail[String]) { val x = new SparsePlaceGroup([Place(0), Place(2)]); val y = new SparsePlaceGroup([Place(1), Place(3)]); finish for (place in x) at(place) { Console.OUT.println(here + " " + Runtime.getName() + " x"); } finish for (place in y) at(place) { Console.OUT.println(here + " " + Runtime.getName() + " y"); } } } $ x10c TestSparse.x10 $ X10_NPLACES=4 x10 TestSparse Place(0) 673@localhost x Place(2) 676@localhost x Place(1) 675@localhost y Place(3) 677@localhost y Cheers, Josh http://milthorpe.org On 2 February 2017 at 07:10, Jheisson Argiro López Restrepo < ja...@op...> wrote: > Hi everyone, > I'm working with 2-4-2 X10 language version and I need to create two > groups of places so I can handle them with two different > placelocalhandles, but I have a question, when I do the following: > > var group1:PlaceGroup = PlaceGroup.make(2); > var group2:PlaceGroup = PlaceGroup.make(2); > > I get 4 diferent places or only 2? how can I make sure that the second > sentence don't points to the same places of the first sentence? Hos can > I obtain some id of the hardware platform that its executed each place? > > Many Thanks !! > > -- > Jheisson A. López R. > > ------------------------------------------------------------ > ------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > _______________________________________________ > X10-users mailing list > X10...@li... > https://lists.sourceforge.net/lists/listinfo/x10-users > |
From: Jheisson A. L. R. <ja...@op...> - 2017-02-01 20:14:49
|
Hi everyone, I'm working with 2-4-2 X10 language version and I need to create two groups of places so I can handle them with two different placelocalhandles, but I have a question, when I do the following: var group1:PlaceGroup = PlaceGroup.make(2); var group2:PlaceGroup = PlaceGroup.make(2); I get 4 diferent places or only 2? how can I make sure that the second sentence don't points to the same places of the first sentence? Hos can I obtain some id of the hardware platform that its executed each place? Many Thanks !! -- Jheisson A. López R. |
From: David P G. <gr...@us...> - 2016-11-23 15:30:49
|
ok. makes sense. libc probably has been updated to be more defensive about possible buffer overflows. I'll apply the change to the head. Google found me this: http://refspecs.linux-foundation.org/LSB_4.0.0/LSB-Core-generic/LSB-Core-generic/libc---realpath-chk-1.html The interface __realpath_chk() shall function in the same way as the interface realpath(), except that __realpath_chk() shall check for buffer overflow before computing a result. If an overflow is anticipated, the function shall abort and the program calling it shall exit. The parameter resolved_len specifies the size of the string resolved_path. If resolved_len is less than PATH_MAX, then the function shall abort, and the program calling it shall exit. The __realpath_chk() function is not in the source standard; it is only in the binary standard. --dave From: Jonas Posner <jon...@un...> To: Mailing list for users of the X10 programming language <x10...@li...> Date: 11/23/2016 10:19 AM Subject: Re: [X10-users] Managed X10: BufferOverflow at X10Launcher I changed the 512 to PATH_MAX in Launcher.h and it works! Btw, my export of X10_HOSTFILE is only 30 charactes long. Thanks, Jonas Am 23.11.2016 um 15:32 schrieb David P Grove: > Jonas Posner <jon...@un...> wrote on 11/23/2016 04:20:51 AM: >> >> ==19578== Process terminating with default action of signal 6 (SIGABRT) >> ==19578== at 0x508C428: raise (raise.c:54) >> ==19578== by 0x508E029: abort (abort.c:89) >> ==19578== by 0x50CE7E9: __libc_message (libc_fatal.c:175) >> ==19578== by 0x516F56B: __fortify_fail (fortify_fail.c:37) >> ==19578== by 0x516D56F: __chk_fail (chk_fail.c:28) >> ==19578== by 0x516DAF3: __realpath_chk (realpath_chk.c:29) >> ==19578== by 0x402601: realpath (stdlib.h:45) >> ==19578== by 0x402601: Launcher::initialize(int, char**) >> (Launcher_Init.cc:184) >> ==19578== by 0x40295D: Launcher::Setup(int, char**) > (Launcher_Init.cc:62) >> ==19578== by 0x401D10: main (main.cc:56) >> >> >> When I unset X10_HOSTFILE, "X10Launcher Hello" has no buffer overflow. >> > > Thanks, that helps. > > In Launcher.h line 122 defines a fixed-size buffer that is passed into > realpath: > > char _hostfname[512]; /* host file name */ > > My guess is that the expansion of symbolic links in the value you are > using for X10_HOSTFILE causes it to exceed the buffer length. There are > two possible fixes: > (1) change the 512 to PATH_MAX in Launcher.h > (2) change to dynamic allocation of the buffer for _hostfname by > changing the declaration to be a char*, setting it to NULL in the init > routine, passing NULL as the second argument to realpath and storing the > returned non-NULL results in _hostfname. > > Would you mind trying to see if this fixes the problem? > > thanks, > > --dave > > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > X10-users mailing list > X10...@li... > https://lists.sourceforge.net/lists/listinfo/x10-users > -- Jonas Posner Universitaet Kassel Fachbereich 16 Elektrotechnik/Informatik Fachgebiet Programmiersprachen/-methodik Wilhelmshoeher Allee 71-73 34121 Kassel, Germany Phone: +49 (0)561 804-6498 Fax: +49 (0)561 804-6219 mailto: jon...@un... www.uni-kassel.de ------------------------------------------------------------------------------ _______________________________________________ X10-users mailing list X10...@li... https://lists.sourceforge.net/lists/listinfo/x10-users |
From: Jonas P. <jon...@un...> - 2016-11-23 15:19:19
|
I changed the 512 to PATH_MAX in Launcher.h and it works! Btw, my export of X10_HOSTFILE is only 30 charactes long. Thanks, Jonas Am 23.11.2016 um 15:32 schrieb David P Grove: > Jonas Posner <jon...@un...> wrote on 11/23/2016 04:20:51 AM: >> >> ==19578== Process terminating with default action of signal 6 (SIGABRT) >> ==19578== at 0x508C428: raise (raise.c:54) >> ==19578== by 0x508E029: abort (abort.c:89) >> ==19578== by 0x50CE7E9: __libc_message (libc_fatal.c:175) >> ==19578== by 0x516F56B: __fortify_fail (fortify_fail.c:37) >> ==19578== by 0x516D56F: __chk_fail (chk_fail.c:28) >> ==19578== by 0x516DAF3: __realpath_chk (realpath_chk.c:29) >> ==19578== by 0x402601: realpath (stdlib.h:45) >> ==19578== by 0x402601: Launcher::initialize(int, char**) >> (Launcher_Init.cc:184) >> ==19578== by 0x40295D: Launcher::Setup(int, char**) > (Launcher_Init.cc:62) >> ==19578== by 0x401D10: main (main.cc:56) >> >> >> When I unset X10_HOSTFILE, "X10Launcher Hello" has no buffer overflow. >> > > Thanks, that helps. > > In Launcher.h line 122 defines a fixed-size buffer that is passed into > realpath: > > char _hostfname[512]; /* host file name */ > > My guess is that the expansion of symbolic links in the value you are > using for X10_HOSTFILE causes it to exceed the buffer length. There are > two possible fixes: > (1) change the 512 to PATH_MAX in Launcher.h > (2) change to dynamic allocation of the buffer for _hostfname by > changing the declaration to be a char*, setting it to NULL in the init > routine, passing NULL as the second argument to realpath and storing the > returned non-NULL results in _hostfname. > > Would you mind trying to see if this fixes the problem? > > thanks, > > --dave > > > > ------------------------------------------------------------------------------ > > > > _______________________________________________ > X10-users mailing list > X10...@li... > https://lists.sourceforge.net/lists/listinfo/x10-users > -- Jonas Posner Universitaet Kassel Fachbereich 16 Elektrotechnik/Informatik Fachgebiet Programmiersprachen/-methodik Wilhelmshoeher Allee 71-73 34121 Kassel, Germany Phone: +49 (0)561 804-6498 Fax: +49 (0)561 804-6219 mailto: jon...@un... www.uni-kassel.de |
From: David P G. <gr...@us...> - 2016-11-23 14:33:09
|
Jonas Posner <jon...@un...> wrote on 11/23/2016 04:20:51 AM: > > ==19578== Process terminating with default action of signal 6 (SIGABRT) > ==19578== at 0x508C428: raise (raise.c:54) > ==19578== by 0x508E029: abort (abort.c:89) > ==19578== by 0x50CE7E9: __libc_message (libc_fatal.c:175) > ==19578== by 0x516F56B: __fortify_fail (fortify_fail.c:37) > ==19578== by 0x516D56F: __chk_fail (chk_fail.c:28) > ==19578== by 0x516DAF3: __realpath_chk (realpath_chk.c:29) > ==19578== by 0x402601: realpath (stdlib.h:45) > ==19578== by 0x402601: Launcher::initialize(int, char**) > (Launcher_Init.cc:184) > ==19578== by 0x40295D: Launcher::Setup(int, char**) (Launcher_Init.cc:62) > ==19578== by 0x401D10: main (main.cc:56) > > > When I unset X10_HOSTFILE, "X10Launcher Hello" has no buffer overflow. > Thanks, that helps. In Launcher.h line 122 defines a fixed-size buffer that is passed into realpath: char _hostfname[512]; /* host file name */ My guess is that the expansion of symbolic links in the value you are using for X10_HOSTFILE causes it to exceed the buffer length. There are two possible fixes: (1) change the 512 to PATH_MAX in Launcher.h (2) change to dynamic allocation of the buffer for _hostfname by changing the declaration to be a char*, setting it to NULL in the init routine, passing NULL as the second argument to realpath and storing the returned non-NULL results in _hostfname. Would you mind trying to see if this fixes the problem? thanks, --dave |