power8 | Start menu replacer for Windows | Menu library
kandi X-RAY | power8 Summary
kandi X-RAY | power8 Summary
Start menu replacer for Windows 8 (and also 7, 8.1, XP, and 10)
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of power8
power8 Key Features
power8 Examples and Code Snippets
Community Discussions
Trending Discussions on power8
QUESTION
I am looking into porting a generic library of abstractions on top of SIMD to power architecture.
However, the information about which extensions are supported on which power and how to compile to them is confusing. At the moment only looking at 64 bit processors and no older than power-7.
On one hand I see this document.
There are 3 types of instructions: no requirements, requires power-8 and requires power-9.
For example vec_cmpgt
has no special requirements.
However, when I use powerpc64-linux-gnu-g++-10
I see an error:
ANSWER
Answered 2021-Feb-18 at 01:16There are a few resources that will help you on your quest.
Firstly, the actual underlying vector instructions in the CPU which are available to you vary by CPU version. These are documented in the ISA. For:
- Power7, this is the Power ISA v2.06 (pdf)
- Power8, this is the Power ISA v2.07
- Power9, this is the Power ISA v3.0
These are all massive PDFs telling you many things, including the details of the vector instructions. You can use these directly if you write your code in assembler.
Then, you have noticed that the supported compiler intrinsics can vary from compiler to compiler: you picked up a reference from the very-google-friendly AIX XL C compiler manual, and found it didn't work on gcc.
So you'd want to spend some quality time with:
- the gcc manual page on vector extensions generally
- the page on PowerPC vector builtins - which is helpfully broken out into subpages for <= 2.05, 2.06, 2.07 and 3.0.
Power has the additional complexity of supporting different types of vector extensions with lots of different names. There's a good explainer at VSX? VMX? Altivec? VR? VSR?! How these PowerPC SIMD acronyms relate to each other?
QUESTION
I want to convert a str number into a float or int numerical type. However, it is throwing an error that it can't, so I am removing the comma. The comma will not be removed, so I need to find a way of finding a way of designating the location in the number space like say fourth.
...ANSWER
Answered 2020-Jan-27 at 05:37Use replace()
QUESTION
I am building a distributed spatial index in Python with a wrapped C++ extension. I am trying to use Dask (for the first time) instead of MPI. The current implementation works, but has several problems.
The critical part is the large overhead compared to serial execution. I would expect an almost linear speed-up from the algorithm.
Persist does not seem to do what I expect, as timings of the first query are much longer than in the second.
for my eyes the code looks unidiomatic, but as said, I am new to Dask. Is there a better way of doing this?
I need to to do some indexing into the delayed objects when using 2d chunks. That does not occur with 1d chunks and feels weird.
The algorithm builds sorts list of particles and then builds an octree, where nodes reference contiguous blocks of particles by in the sorted array by a pair of (start, end) indices. Queries take a boundary box and search overlapping nodes in the octree collect particles actually in the boundary box from the resulting candidates. Both building and queries are purely serial.
Parallelisation is done by randomly splitting up the particles, building tree on each subset. Queries are broadcast across all sub-indices and results are concatenated back together. Dask felt like a natural fit here. I use persist to generate the index once and keep it around as I expect many queries per index.
I tried map_blocks
but this only seems to work for array to array transformations. Further, various permutations of persist/compute have been tried.
ANSWER
Answered 2019-Nov-09 at 20:15It's hard to tell without profiling, but my guess is that you're including your spatial index in every task, and so are being hurt by excessive serialization.
I recommend reading through this document to learn how to identify costs: https://docs.dask.org/en/latest/phases-of-computation.html
And this document to learn about avoiding the serialization of large objects: https://docs.dask.org/en/latest/delayed-best-practices.html#avoid-repeatedly-putting-large-inputs-into-delayed-calls
QUESTION
I have a stored procedure such as below :
...ANSWER
Answered 2019-Sep-29 at 10:07Invalid object name 'dbo.sp_InsertPumpsStatus'.
QUESTION
I'm porting a application that uses AES encryption and decryption instructions to randomize some data from x86 to POWER8. I hit a wall with the _mm_aesdec_si128 instruction, it seems to do something different than the equivalent IBM __builtin_crypto_vncipher. The documentation at https://link.springer.com/content/pdf/10.1007/978-3-642-03317-9_4.pdf, pages 52-54, mention that it follows FIPS 197. The IBM documentation at https://ibm.ent.box.com/s/jd5w15gz301s5b5dt375mshpq9c3lh4u, page 305 also says that it follow FIPS197, the only difference is that the order of InvMixColumns and the xor with round key are flipped, but does that change the result?
How can they both say they follow the specification if the results are different?
The following C program works fine in x86, but will output the wrong result for aesdec in ppc64. The aesenc in ppc64 thankfully works as expected.
For now I solved the problem by using a software implementation of aesdec, but I want to do everything in hardware.
C program:
...ANSWER
Answered 2019-May-18 at 16:29The solution was using a zero key to make the xor step in the middle return identity, then xoring with the real key at the end.
QUESTION
I got a dialog, which displays numbers. In the last row I want to display the sum of these 10 numbers, while the user changes these numbers. So for example if the user changes the 50 to 60 I want the last row to display 110. What is a good way to implement that? Following some html of the dialog:
...ANSWER
Answered 2019-May-05 at 13:55Update your html as follows :
QUESTION
I'm working on a simple JIT compiler for PowerPC, I followed the examples in https://github.com/spencertipping/jit-tutorial to get a hang of how to work with it.
The problem is that the identity function in the second example "jitproto.c" can't really be ported to powerpc as is, using the "LWA" and "BLR" instructions, it just causes segfaults when executed.
In the end I used the machine code output of the SLJIT compiler (https://github.com/linux-on-ibm-z/sljit) to see what I'm doing wrong, and I see it generates 12 instruction words before what I thought would be the function.
So what are those instructions doing? Why can't I just start the function directly like in x86?
Code can be compiled with a C99 compiler on PPC64 (tested in a powermac and a power8 server).
...ANSWER
Answered 2019-Mar-25 at 18:12The instructions are required for setting up the stack layout of PPC64 ABI. See here: http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi.html#STACK
QUESTION
I'm catching an assembler error when using inline assembly and a local label. The compiler is GCC, and the machine is PowerPC running AIX. The code reads the timestamp (it is roughly equivalent to rdtsc
):
ANSWER
Answered 2018-Aug-16 at 06:32gcc doesn't emit machine-code directly; it feeds its asm output to the system assembler. You could configure gcc to use a different assembler, like GAS, but apparently the default setup on the machine you're using has GCC using AIX's assembler.
Apparently AIX's assembler doesn't support numeric labels, unlike the GNU assembler. Probably that article you linked is assume Linux (accidentally or on purpose) when it mentions using labels like 0
.
The easiest workaround is probably having GCC auto-number the label instead of using local labels, so the same asm block can be inlined / unrolled multiple times in the same compilation unit without symbol-name conflicts. %=
expands to a unique number in every instance.
IDK if an L..
makes it a file-local label (which won't clutter up debug info or the symbol table). On Linux/ELF/x86, .L
is the normal prefix, but you have a compiler-generated L..
label.
QUESTION
I'm suffering GCC inline assembly on PowerPC. The program compiles fine with -g2 -O3
, but fails to compile with -g3 -O0
. The problem is, I need to observe it under the debugger so I need symbols without optimizations.
Here is the program:
...ANSWER
Answered 2018-Nov-02 at 04:09The issue is that the generated asm has register+offset operands for RA and RB, but the lxvd2x
instruction only takes direct register addresses (ie, no offsets).
It looks like you've got your constraints wrong there. Looking at the inline asm:
QUESTION
I'm on GCC112, which is a little-endian Power8 machine running Linux. Power8 has in-core crypto providing AES, SHA and a few other useful features. I'm trying to determine the availability of the features at runtime using getauxval
. The use case is distros building for a "minimum" capable machine, and we need to swap-in a faster function at runtime.
The dump of hwcaps.h
is shown below, but it lacks specific bits for Power8, AES, SHA and others. However, I believe Power8 is ISA 2.07, and ISA 2.07 has the bit PPC_FEATURE2_ARCH_2_07
.
The thing I am not clear on is, is Power8 in-core crypto optional like ARM's crypto under ARMv8. I can't find a document that clearly states the requirement, and I don't have a membership to OpenPower to access ISA documents. (Another possibility is, it is stated but I missed it in the docs).
Is it possible to use getauxval
to query the runtime environment for the features? If not, then how do we determine feature availability at runtime? Is CPU probing the only alternative available?
Maybe more generally, how do we determine Power6, Power7 and Power8 runtime environments?
auxv.h
is mostly empty. The header file includes hwcaps.h
.
ANSWER
Answered 2017-Sep-11 at 07:13I'd say that getauxval()
would be the best way to do this; the HWCAP
& HWCAP2
values are exactly for determining hardware features. Missing from your list is the PPC_FEATURE2_VEC_CRYPTO
, which indicates the presence of the vector crypto instructions, which sounds like the one you need.
As a side note: you probably don't want to detect processor implementations, but processor features. Specifically, check for the individual feature, rather than trying to check for a process that provides that feature. (eg., detect VEC_CRYPTO
directly, rather than trying to check for POWER8, and assume that that implies crypto functionality).
As a bit of detail, Linux's cputable entries specify the HWCAP
/HWCAP2
values. Using POWER8 as an example:
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install power8
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page