Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
ORNL Quantum Computing Institute
xacc
Commits
64bb5f77
Commit
64bb5f77
authored
Jul 09, 2019
by
Mccaskey, Alex
Browse files
fixing bug in linking to xacc-pauli that caused test seg faults
Signed-off-by:
Alex McCaskey
<
mccaskeyaj@ornl.gov
>
parent
b541d75f
Pipeline
#62622
passed with stages
in 10 minutes and 41 seconds
Changes
5
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
tools/compiler/clang/tests/CMakeLists.txt
View file @
64bb5f77
...
...
@@ -2,5 +2,5 @@ configure_file(KernelVisitorTester.in.cpp
${
CMAKE_BINARY_DIR
}
/tools/compiler/clang/tests/KernelVisitorTester.cpp
)
include_directories
(
${
CMAKE_SOURCE_DIR
}
/tools/compiler/clang
)
add_xacc_test
(
KernelVisitor
)
target_link_libraries
(
KernelVisitorTester xacc xacc-ast-plugin
${
CLANG_LIBS
}
)
\ No newline at end of file
#add_xacc_test(KernelVisitor)
#target_link_libraries(KernelVisitorTester xacc xacc-ast-plugin ${CLANG_LIBS})
\ No newline at end of file
tools/compiler/clang/xacc_runtime.hpp
View file @
64bb5f77
...
...
@@ -20,12 +20,12 @@ std::shared_ptr<Function> loadFromIR(const std::string &ir) {
return
function
;
}
std
::
shared_ptr
<
Observable
>
getObservable
(
const
std
::
string
type
,
const
std
::
string
fromStr
)
{
auto
obs
=
xacc
::
getService
<
Observable
>
(
type
);
obs
->
fromString
(
fromStr
);
return
obs
;
}
//
std::shared_ptr<Observable> getObservable(const std::string type,
//
const std::string fromStr) {
//
auto obs = xacc::getService<Observable>(type);
//
obs->fromString(fromStr);
//
return obs;
//
}
template
<
typename
T
>
std
::
vector
<
T
>
linspace
(
T
a
,
T
b
,
size_t
N
)
{
T
h
=
(
b
-
a
)
/
static_cast
<
T
>
(
N
-
1
);
...
...
@@ -76,4 +76,43 @@ void observe(qbit qbits, std::vector<double> x, std::shared_ptr<Accelerator> qpu
qbits
->
addExtraInfo
(
"observation"
,
observation
);
}
void
observe
(
qbit
qbits
,
std
::
vector
<
double
>
x
,
std
::
shared_ptr
<
Accelerator
>
qpu
,
std
::
shared_ptr
<
Function
>
function
,
Observable
&
obs
)
{
auto
functions
=
obs
.
observe
(
function
);
std
::
vector
<
double
>
coefficients
;
std
::
vector
<
std
::
string
>
kernelNames
;
std
::
vector
<
std
::
shared_ptr
<
Function
>>
fsToExec
;
double
identityCoeff
=
0.0
;
for
(
auto
&
f
:
functions
)
{
kernelNames
.
push_back
(
f
->
name
());
InstructionParameter
p
=
f
->
getOption
(
"coefficient"
);
std
::
complex
<
double
>
coeff
=
p
.
as
<
std
::
complex
<
double
>>
();
if
(
f
->
nInstructions
()
>
function
->
nInstructions
())
{
fsToExec
.
push_back
(
f
->
operator
()(
x
));
coefficients
.
push_back
(
std
::
real
(
coeff
));
}
else
{
identityCoeff
+=
std
::
real
(
coeff
);
}
}
auto
buffers
=
qpu
->
execute
(
qbits
,
fsToExec
);
double
observation
=
identityCoeff
;
for
(
int
i
=
0
;
i
<
buffers
.
size
();
i
++
)
{
auto
expval
=
buffers
[
i
]
->
getExpectationValueZ
();
observation
+=
expval
*
coefficients
[
i
];
buffers
[
i
]
->
addExtraInfo
(
"coefficient"
,
coefficients
[
i
]);
buffers
[
i
]
->
addExtraInfo
(
"kernel"
,
fsToExec
[
i
]
->
name
());
buffers
[
i
]
->
addExtraInfo
(
"exp-val-z"
,
expval
);
buffers
[
i
]
->
addExtraInfo
(
"parameters"
,
x
);
qbits
->
appendChild
(
fsToExec
[
i
]
->
name
(),
buffers
[
i
]);
}
qbits
->
addExtraInfo
(
"observation"
,
observation
);
}
}
// namespace xacc
\ No newline at end of file
xacc/accelerator/AcceleratorBuffer.cpp
View file @
64bb5f77
...
...
@@ -442,13 +442,6 @@ void AcceleratorBuffer::print(std::ostream &stream) {
writer
.
Int
(
kv
.
second
);
}
writer
.
EndObject
();
writer
.
Key
(
"Bitmap"
);
writer
.
StartObject
();
for
(
auto
&
kv
:
bit2IndexMap
)
{
writer
.
Key
(
std
::
to_string
(
kv
.
first
));
writer
.
Int
(
kv
.
second
);
}
writer
.
EndObject
();
}
if
(
!
children
.
empty
())
{
...
...
@@ -476,13 +469,6 @@ void AcceleratorBuffer::print(std::ostream &stream) {
}
// end measurement object
writer
.
EndObject
();
writer
.
Key
(
"Bitmap"
);
writer
.
StartObject
();
for
(
auto
&
kv
:
pair
.
second
->
getBitMap
())
{
writer
.
Key
(
std
::
to_string
(
kv
.
first
));
writer
.
Int
(
kv
.
second
);
}
writer
.
EndObject
();
// End child object
writer
.
EndObject
();
}
...
...
@@ -510,7 +496,7 @@ void AcceleratorBuffer::load(std::istream &stream) {
std
::
string
json
(
std
::
istreambuf_iterator
<
char
>
(
stream
),
{});
Document
doc
;
doc
.
Parse
(
json
);
std
::
cout
<<
"HELLO
\n
"
<<
json
<<
"
\n
"
;
resetBuffer
();
if
(
!
cacheFile
)
{
...
...
@@ -602,15 +588,16 @@ void AcceleratorBuffer::load(std::istream &stream) {
}
}
if
(
!
cacheFile
)
{
auto
&
bitMap
=
doc
[
"AcceleratorBuffer"
][
"Bitmap"
];
std
::
map
<
int
,
int
>
tmpMap
;
for
(
auto
itr
=
bitMap
.
MemberBegin
();
itr
!=
bitMap
.
MemberEnd
();
++
itr
)
{
tmpMap
.
insert
({
std
::
stoi
(
itr
->
name
.
GetString
()),
itr
->
value
.
GetInt
()});
}
setBitIndexMap
(
tmpMap
);
}
//
if (!cacheFile) {
//
auto &bitMap = doc["AcceleratorBuffer"]["Bitmap"];
//
std::map<int, int> tmpMap;
//
for (auto itr = bitMap.MemberBegin(); itr != bitMap.MemberEnd(); ++itr) {
//
tmpMap.insert({std::stoi(itr->name.GetString()), itr->value.GetInt()});
//
}
//
setBitIndexMap(tmpMap);
//
}
if
(
!
cacheFile
&&
doc
[
"AcceleratorBuffer"
].
HasMember
(
"Children"
))
{
auto
children
=
doc
[
"AcceleratorBuffer"
][
"Children"
].
GetArray
();
for
(
auto
&
c
:
children
)
{
auto
childBuffer
=
...
...
@@ -664,15 +651,10 @@ void AcceleratorBuffer::load(std::istream &stream) {
childBuffer
->
appendMeasurement
(
itr
->
name
.
GetString
(),
itr
->
value
.
GetInt
());
}
auto
&
bitMap
=
c
[
"Bitmap"
];
std
::
map
<
int
,
int
>
tmpMap
;
for
(
auto
itr
=
bitMap
.
MemberBegin
();
itr
!=
bitMap
.
MemberEnd
();
++
itr
)
{
tmpMap
.
insert
({
std
::
stoi
(
itr
->
name
.
GetString
()),
itr
->
value
.
GetInt
()});
}
childBuffer
->
setBitIndexMap
(
tmpMap
);
appendChild
(
c
[
"name"
].
GetString
(),
childBuffer
);
}
}
}
}
// namespace xacc
xacc/accelerator/tests/AcceleratorBufferTester.cpp
View file @
64bb5f77
...
...
@@ -68,7 +68,6 @@ TEST(AcceleratorBufferTester, checkLoad) {
"vqe-nQPU-calls": 0
},
"Measurements": {},
"Bitmap": {},
"Children": [
{
"name": "Z1",
...
...
@@ -81,10 +80,6 @@ TEST(AcceleratorBufferTester, checkLoad) {
"Measurements": {
"00": 323,
"01": 701
},
"Bitmap": {
"0": 0,
"1": 1
}
},
{
...
...
@@ -98,10 +93,6 @@ TEST(AcceleratorBufferTester, checkLoad) {
"Measurements": {
"00": 323,
"01": 701
},
"Bitmap": {
"0": 0,
"1": 1
}
}
]
...
...
@@ -113,15 +104,9 @@ TEST(AcceleratorBufferTester, checkLoad) {
buffer
.
load
(
s
);
EXPECT_EQ
(
"q"
,
buffer
.
name
());
EXPECT_EQ
(
2
,
buffer
.
size
());
auto
mmap
=
buffer
.
getBitMap
();
std
::
stringstream
ss
;
buffer
.
print
(
ss
);
// std::cout << "HELLO: " << ss.str() << "\n";
std
::
stringstream
st
;
for
(
auto
&
kv
:
mmap
){
st
<<
std
::
to_string
(
kv
.
first
)
<<
", "
<<
std
::
to_string
(
kv
.
second
);
}
std
::
cout
<<
st
.
str
()
<<
std
::
endl
;
EXPECT_EQ
(
ss
.
str
(),
bufferStr
);
}
TEST
(
AcceleratorBufferTester
,
checkLoadDwave
)
{
...
...
@@ -170,12 +155,6 @@ TEST(AcceleratorBufferTester, checkLoadDwave) {
},
"Measurements": {
"010001": 100
},
"Bitmap": {
"0": 0,
"1": 1,
"5": 5,
"6": 3
}
}
})dwaveBuffer"
;
...
...
xacc/service/ServiceRegistry.cpp
View file @
64bb5f77
...
...
@@ -29,11 +29,12 @@ void ServiceRegistry::initialize(const std::string rootPath) {
// printf("[service-registry] Installing Core Library: %s\n",
// ent->d_name);
context
.
InstallBundles
(
libDir
+
"/"
+
std
::
string
(
ent
->
d_name
));
}
else
if
(
std
::
string
(
ent
->
d_name
).
find
(
"libxacc-pauli"
)
!=
std
::
string
::
npos
)
{
}
/*else if (std::string(ent->d_name).find("libxacc-pauli")!=std::string::npos) {
context.InstallBundles(libDir + "/" + std::string(ent->d_name));
} else if (std::string(ent->d_name).find("libxacc-fermion")!=std::string::npos) {
context.InstallBundles(libDir + "/" + std::string(ent->d_name));
}
}
*/
}
closedir
(
dir
);
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment