Skip to Content.
Sympa Menu

charm - Re: [charm] [ppl] Creating a NAMD Shared Library -> Undefined Symbols in Charm libs

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

Re: [charm] [ppl] Creating a NAMD Shared Library -> Undefined Symbols in Charm libs


Chronological Thread 
  • From: "Michael S. Sellers (Cont, ARL/WMRD)" <michael.s.sellers.ctr AT us.army.mil>
  • To: Phil Miller <mille121 AT illinois.edu>
  • Cc: Abhinav S Bhatele <bhatele AT illinois.edu>, Charm Mailing List <charm AT cs.illinois.edu>
  • Subject: Re: [charm] [ppl] Creating a NAMD Shared Library -> Undefined Symbols in Charm libs
  • Date: Thu, 02 Dec 2010 16:12:43 -0500
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/charm>
  • List-id: CHARM parallel programming system <charm.cs.uiuc.edu>

I edited the Charm makefile to build the .so's and now I'm able to compile, link, open and close the library. Thank you!


-Mike

Phil Miller wrote:
On Thu, Dec 2, 2010 at 12:59, Michael S. Sellers (Cont, ARL/WMRD)
<michael.s.sellers.ctr AT us.army.mil>
wrote:
Does this mean that the cause of the problem is different, or should I still
look at the memory and thread library linking?

It means your problem is very likely what I thought was going on. Yes,
you'll need to make shared objects of those and link against them as
well.

-Mike

Abhinav S Bhatele wrote:
NAMD uses charmc to link the executable.


On Thu, Dec 2, 2010 at 12:02 PM, Phil Miller
<mille121 AT illinois.edu
<blockedmailto:mille121 AT illinois.edu>>
wrote:

On Thu, Dec 2, 2010 at 11:53, Michael S. Sellers (Cont, ARL/WMRD)

<michael.s.sellers.ctr AT us.army.mil

<blockedmailto:michael.s.sellers.ctr AT us.army.mil>>
wrote:
> Okay, so I need to have charm build these as shared libraries
(memory-os and
> threads-context), and then link them when I build the NAMD
shared library?
>
> Is there a short answer to why I need to do this, but it's not
necessary for
> the NAMD executable?

I'm not too familiar with NAMD's build system, but if it uses charmc
(the Charm compiler wrapper) to link the executable, that
automatically links in memory allocation and threading libraries,
either the platform default or whatever was specified on the command
line.

Please let us know if you encounter other issues like this, or have in
the past, even if you figured out the solution on your own. We'll
definitely look at fixing things to make life easier.

> Thanks,
>
> Mike
>
> Phil Miller wrote:
>>
>> I may have been a bit too hasty. You'll also need one of the thread
>> libraries as well. It looks like multicore-linux64 uses context
>> threads, so libthreads-context.o.
>>
>> On Thu, Dec 2, 2010 at 11:35, Michael S. Sellers (Cont, ARL/WMRD)
>>
<michael.s.sellers.ctr AT us.army.mil

<blockedmailto:michael.s.sellers.ctr AT us.army.mil>>
wrote:
>>
>>>
>>> Phil,
>>>
>>> Thanks a lot for the quick response.
>>>
>>> -Mike
>>>
>>> Phil Miller wrote:
>>>
>>>>
>>>> It looks like you're missing the memory allocation library. The
>>>> multicore-linux64 build target defaults to the OS/C-library
provided
>>>> memory allocation routines (per
charm/src/arch/multicore-linux64), so
>>>> you should link in charm/multicore-linux64/lib/libmemory-os.o
as well.
>>>> You may need to adapt things to build that as a shared object
as well,
>>>> but you seem to have a handle on that.
>>>>
>>>> Phil
>>>>
>>>> On Thu, Dec 2, 2010 at 11:05, Michael S. Sellers (Cont, ARL/WMRD)
>>>>
<michael.s.sellers.ctr AT us.army.mil

<blockedmailto:michael.s.sellers.ctr AT us.army.mil>>
wrote:
>>>>
>>>>
>>>>>
>>>>> All,
>>>>>
>>>>> This message was sent to the NAMD listserv about a week ago,
and I
>>>>> haven't
>>>>> heard anything back so I thought I would try charm.
>>>>> I am trying to build NAMD as a shared library, but having
some linking
>>>>> trouble. I realize it can't "work" as is without an
interface, but
>>>>> this
>>>>> is
>>>>> a first step.
>>>>>
>>>>> I first compiled Charm++ as a shared libary, as well as FFTW
and TCL.
>>>>> Then
>>>>> I edited the NAMD Makefile and added -fPIC in the compiler
options, and
>>>>> an
>>>>> additional linkage section to create "libnamd.so" with
"-charm-shared"
>>>>> and
>>>>> "-rdynamic" options. It seems to compile and link okay via
the edited
>>>>> Makefile. "namd2" from the compile runs fine.
>>>>>
>>>>> I'm testing the libnamd.so library using a simple program
that sets
>>>>> "dlopen("path-to-library", RTLD_LAZY);" equal to a dummy
pointer.
>>>>> However,
>>>>> with this I am getting an error.
>>>>>
>>>>> ****loadNAMD.C******
>>>>> ....
>>>>>
>>>>> cout << "Opening libnamd.so...\n";
>>>>> void* handle = dlopen("software/lib/NAMD/libnamd.so",
RTLD_LAZY);
>>>>> if (handle == NULL){
>>>>> printf("%s\n", dlerror());
>>>>> return 0;
>>>>> }
>>>>>
>>>>> ***********************
>>>>>
>>>>> []$ g++ loadNAMD.C -o loadNAMD -rdynamic -ldl
>>>>> []$ ./loadNAMD
>>>>>
>>>>> The output of dlerror() is:
>>>>>
>>>>> Opening libnamd.so...
>>>>>
>>>>>
>>>>>


software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libconv-core.so:
>>>>> undefined symbol: Cpv_CthData_
>>>>>
>>>>> I'm wondering if this is being caused by a lack of Charm++ (via
>>>>> charmrun
>>>>> or
>>>>> charmc), or the fact that dlopen invokes any _init() methods
existing
>>>>> in
>>>>> the
>>>>> code (I read that somewhere...) ? I would appreciate any
suggestions
>>>>> from
>>>>> those who are familiar with this type of thing. I have
included the
>>>>> output
>>>>> of "ldd -d libnamd.so" at the bottom of this message.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Michael Sellers
>>>>>
>>>>> []$ ldd -d ~/software/lib/NAMD/libnamd.so
>>>>> libmoduleNeighborLB.so =>
>>>>>
>>>>>
>>>>>


software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libmoduleNeighborLB.so
>>>>> (0x00002b7fe9318000)
>>>>> libmoduleHybridLB.so =>
>>>>>
>>>>>
>>>>>


software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libmoduleHybridLB.so
>>>>> (0x00002b7fe9524000)
>>>>> libmoduleRefineLB.so =>
>>>>>
>>>>>
>>>>>


/software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libmoduleRefineLB.so
>>>>> (0x00002b7fe9730000)
>>>>> libmoduleGreedyLB.so =>
>>>>>
>>>>>
>>>>>


software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libmoduleGreedyLB.so
>>>>> (0x00002b7fe993b000)
>>>>> libck.so =>
>>>>>
>>>>>
>>>>>


software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libck.so
>>>>> (0x00002b7fe9b48000)
>>>>> libconv-cplus-y.so =>
>>>>>
>>>>>
>>>>>


software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libconv-cplus-y.so
>>>>> (0x00002b7fe9f23000)
>>>>> libconv-core.so =>
>>>>>
>>>>>
>>>>>


software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libconv-core.so
>>>>> (0x00002b7fea138000)
>>>>> libconv-util.so =>
>>>>>
>>>>>
>>>>>


software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libconv-util.so
>>>>> (0x00002b7fea3d4000)
>>>>> libpthread.so.0 => /lib64/libpthread.so.0
(0x00002b7fea61a000)
>>>>> libckqt.so =>
>>>>>
>>>>>
>>>>>


software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libckqt.so
>>>>> (0x00002b7fea835000)
>>>>> libdl.so.2 => /lib64/libdl.so.2 (0x00002b7feaa39000)
>>>>> libtcl8.5.so <blockedhttp://libtcl8.5.so> =>
software/lib/libtcl8.5.so <blockedhttp://libtcl8.5.so>
(0x00002b7feac3d000)
>>>>> libsrfftw.so.2 => software/lib/libsrfftw.so.2
(0x00002b7feaf58000)
>>>>> libsfftw.so.2 => software/lib/libsfftw.so.2
(0x00002b7feb188000)
>>>>> libm.so.6 => /lib64/libm.so.6 (0x00002b7feb3be000)
>>>>> libstdc++.so.6 => /usr/local/lib64/libstdc++.so.6
>>>>> (0x00002b7feb641000)
>>>>> libgcc_s.so.1 => /usr/local/lib64/libgcc_s.so.1
(0x00002b7feb947000)
>>>>> libc.so.6 => /lib64/libc.so.6 (0x00002b7febb5c000)
>>>>> /lib64/ld-linux-x86-64.so.2 (0x0000003f25000000)
>>>>> undefined symbol: Cpv_CthData_
>>>>>
>>>>>
>>>>>

(software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libconv-core.so)
>>>>> undefined symbol: cpd_memory_pup
>>>>>
>>>>>
>>>>>

(software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libck.so)
>>>>> undefined symbol: memory_stack_top
>>>>>
>>>>>
>>>>>

(software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libck.so)
>>>>> undefined symbol: Cpv_CthData_
>>>>>
>>>>>
>>>>>

(software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libck.so)
>>>>> undefined symbol: cpd_memory_length
>>>>>
>>>>>
>>>>>


(software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libck.so)
>>>>> undefined symbol: cpd_memory_getLength
>>>>>
>>>>>
>>>>>

(software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libck.so)
>>>>> undefined symbol: cpdInSystem
>>>>>
>>>>>
>>>>>


(software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libck.so)
>>>>> undefined symbol: cpd_memory_get
>>>>>
>>>>>
>>>>>

(software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libck.so)
>>>>> undefined symbol: memory_status_info
>>>>>
>>>>>
>>>>>

(software/src/NAMD_CVS_Source/Linux-x86_64-g++/.rootdir/charm-6.2.2/multicore-linux64/lib_so/libck.so)
>>>>> []$
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> charm mailing list
>>>>>
charm AT cs.uiuc.edu

<blockedmailto:charm AT cs.uiuc.edu>
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/charm
<blockedhttp://lists.cs.uiuc.edu/mailman/listinfo/charm>
>>>>>
>>>>> _______________________________________________
>>>>> ppl mailing list
>>>>>
ppl AT cs.uiuc.edu

<blockedmailto:ppl AT cs.uiuc.edu>
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/ppl
<blockedhttp://lists.cs.uiuc.edu/mailman/listinfo/ppl>
>>>>>
>>>>>
>>>>>
>>>>>
>

_______________________________________________
charm mailing list

charm AT cs.uiuc.edu

<blockedmailto:charm AT cs.uiuc.edu>
http://lists.cs.uiuc.edu/mailman/listinfo/charm
<blockedhttp://lists.cs.uiuc.edu/mailman/listinfo/charm>

_______________________________________________
ppl mailing list

ppl AT cs.uiuc.edu

<blockedmailto:ppl AT cs.uiuc.edu>
http://lists.cs.uiuc.edu/mailman/listinfo/ppl
<blockedhttp://lists.cs.uiuc.edu/mailman/listinfo/ppl>




--
Abhinav S Bhatele, Ph. D.
Webpage: www.bhatele.org <blockedhttp://www.bhatele.org>

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature




Archive powered by MHonArc 2.6.16.

Top of Page