Saturday, August 1, 2009

comp.programming.threads - 25 new messages in 5 topics - digest

comp.programming.threads
http://groups.google.com/group/comp.programming.threads?hl=en

comp.programming.threads@googlegroups.com

Today's topics:

* Multi-cores and contention,,, - 1 messages, 1 author
http://groups.google.com/group/comp.programming.threads/t/b74390b785ea0e26?hl=en
* Spinlocks - trouble with speed - 12 messages, 4 authors
http://groups.google.com/group/comp.programming.threads/t/9f5e34251ccf45e3?hl=en
* Lock-free threadpool 1.03 and patch... - 1 messages, 1 author
http://groups.google.com/group/comp.programming.threads/t/7a784a0ad7f4ce87?hl=en
* weird thread behavior on itanium/hp-ux with pthread - 1 messages, 1 author
http://groups.google.com/group/comp.programming.threads/t/b2b5d744b99b760c?hl=en
* NOTHING is complex or difficul... - 10 messages, 2 authors
http://groups.google.com/group/comp.programming.threads/t/8f4050fcf0ebf6ae?hl=en

==============================================================================
TOPIC: Multi-cores and contention,,,
http://groups.google.com/group/comp.programming.threads/t/b74390b785ea0e26?hl=en
==============================================================================

== 1 of 1 ==
Date: Fri, Jul 31 2009 9:17 pm
From: Amine

I wrote:

" Is it not something like a database that doesn't scale in REALITY ?

Even with those wait-free or lock-free data-strutures ?

How will you call that ?

And tell me who is responsible of this situation Dmitriy V'jukov ?

Is it the ALGORITHM ?

The HARDWARE ?

Or the DATA ?

Can i say the ALGORITHM ?

Or is it forbiden ?

So, i will say the DATA is reponsible.

Am i correct to say that ?

Or is it the HARDWARE ?"


And what is the solution to this catastrophe Dmitriy V'jukov ?

Think with me my dear Dmitriy V'jukov...

Regards,
Amine.

On Jul 31, 11:19 pm, Amine <ami...@colba.net> wrote:
> Dmitriy V'jukov  wrote:
> > What do you mean by all these "M/M/1" and "M/M/m"? I am totally
> > confused.
> > --
> > Dmitriy V'jukov
> I  wrote:
>
> "Let's take for example there is a high rate of transactions
> like find('key',out obj), that are serviced by a wait-free or a
> lock-free hash-table. After 'obj' is returned we copy the data
> inside the obj to somewhere else over some very fast networks.
>
> What is the benefit of those wait-free or lock-free datastructures
> if the accessed memory data inside 'obj' is random and we are
> missing completly or a lot the cash: so that we will  not be
> servicing in an M/M/m manner with the caches as the servers
>  but in an M/M/1 manner with the memory (bus) as the server:
>
>   => LOW SERVICE RATE + NO SCALABILITY.
>
> Is it not something like a database that doesn't scale in REALITY ?
>
> Even with those wait-free or lock-free data-strutures ?
>
> How will you call that ?
>
> And tell me who is responsible of this situation Dmitriy V'jukov  ?
>
> Is it the ALGORITHM ?
>
> The HARDWARE ?
>
> Or the  DATA ?
>
> Can i say the ALGORITHM ?
>
> Or is it forbiden ?
>
> So, i will say the DATA is reponsible.
>
> Am i correct to say that ?
>
> Or is it the HARDWARE ?
>
> Regards,
> Amine Moulay Ramdane.


==============================================================================
TOPIC: Spinlocks - trouble with speed
http://groups.google.com/group/comp.programming.threads/t/9f5e34251ccf45e3?hl=en
==============================================================================

== 1 of 12 ==
Date: Sat, Aug 1 2009 1:40 am
From: Amine

David Schwartz wrote:
> [...]
> Spinlocks are phenomenally complex. You have to have a very
> deep understanding of the CPU internals to get them right.

You have said complex ?

Is it just a false impression ?

Or is it the truth ?

Does the complex or difficul really exist ?

In my opinion:

Even if we don't comprehand the things

*NOTHING* is complex or difficul.

To say something is complex or difficul is just a FALSE impression

Why ?

Cause as soon as you COMPREHAND the thing *COMPLETLY*

The thing will become SIMPLE

and this final impression IS the REAL truth.

Hence, *NOTHING* is complex or difficul.

Think about it...


Regards,
Amine Moulay Ramdane.

== 2 of 12 ==
Date: Sat, Aug 1 2009 3:30 am
From: "Chris M. Thomasson"


"Chris M. Thomasson" <no@spam.invalid> wrote in message
news:h4t8de$105j$1@news.ett.com.ua...
> "Thomas Richter" <thor@math.tu-berlin.de> wrote in message
> news:h4t7eq$bf0$1@infosun2.rus.uni-stuttgart.de...
> [...]
>> I would currently not care enough about hyperthreading CPUs right now,
>> but I can throw in a couple of "nops" in the loop, or a bogus
>> computation. Feel ensured that I tried this, made no difference, but this
>> isn't a hyperthreading CPU in first place.
>
> Use the PAUSE instruction. Here is a simple spinlock (in MSVC++) you can
> try out:
> ________________________________________________________________________
[...]
> ________________________________________________________________________
>
>
>
>
> You can easily convert this to AT&T syntax and use GAS to assemble it.


Here is another version which does not spin on XCHG:
________________________________________________________________________
typedef __int32 atomicword_ia32;
typedef atomicword_ia32 spinlock_ia32;


#define SPINLOCK_IA32_INIT 0


#define spinlock_ia32_init(mp_self) ( \
*(mp_self) = 0 \
)


__declspec(naked) void
spinlock_ia32_acquire(
spinlock_ia32* const self
) {
_asm {
MOV ECX, [ESP + 4]
MOV EAX, 1


spinlock_ia32_acquire_retry:
XCHG [ECX], EAX
TEST EAX, EAX
JNZ spinlock_ia32_acquire_failed
RET


spinlock_ia32_acquire_failed:
PAUSE
MOV EDX, [ECX]
TEST EDX, EDX
JNZ spinlock_ia32_acquire_failed
JMP spinlock_ia32_acquire_retry
}
}


__declspec(naked) void
spinlock_ia32_release(
spinlock_ia32* const self
) {
_asm {
MOV EAX, [ESP + 4]
MOV DWORD PTR [EAX], 0
RET
}
}
________________________________________________________________________


I suggest that you try both versions out and see what you come up with in
terms of performance characteristics.

== 3 of 12 ==
Date: Sat, Aug 1 2009 6:35 am
From: David Schwartz


On Aug 1, 3:30 am, "Chris M. Thomasson" <n...@spam.invalid> wrote:

> __declspec(naked) void
> spinlock_ia32_release(
>  spinlock_ia32* const self
> ) {
>   _asm {
>     MOV EAX, [ESP + 4]
>     MOV DWORD PTR [EAX], 0
>     RET
>   }}

This will deadlock on SMP PentiumPro systems due to an erratum. If the
second MOV occurs just as the other CPU releases the cache line, it
won't get invalidated and the next spinlock acquisition, if it takes
place on that CPU, may erroneously spin. The deadlock won't break
until the other CPU happens to try to acquire the spinlock.

I'm not sure anyone cares about SMP PPro systems anymore though.

DS


== 4 of 12 ==
Date: Sat, Aug 1 2009 9:30 am
From: Thomas Richter


David Schwartz wrote:
> On Jul 31, 5:03 pm, Thomas Richter <t...@math.tu-berlin.de> wrote:
>
>>> I guess, you mean that the following grep returns nothing, right?
>>> $ grep "pthread_spin" /usr/include/pthread.h
>
>> It returns "file not found" in some sense. This is not supposed to work
>> on WinXP, Linux or any specific operating system.
>
> You can't write "generic spinlocks" and expect decent performance.
> Synchronization primitives get their performance from details about
> how the hardware is implemented. You can, at least to some extent,
> write generic x86 spinlocks.

Now, guess what this is about? Writing an x86 generic spin lock to some
extend.

>>> Otherwise you may perhaps just need to tell the compiler to turn the
>>> SuSv6 feature on (by setting _XOPEN_SOURCE=600 or
>>> _C_POSIX_SOURCE=200112L)
>
>> Sure, having that available I agree that this is the better option. But
>> its not available.
>
> I think you are proceeding in a direction that doesn't make any sense.
> You platform has mutexes, but you want spinlocks. Presumably this is
> for performance purposes. But you're demanding a spinlock
> implementation with no knowledge of the hardware and operating system
> details. It is virtually impossible for such a spinlock to outperform
> the platform's native mutexes.

Are you misreading my posts on purpose? Just to say this again: "My
platform does not have mutexes available". Is that clear by now?

> I would suggest using native spinlocks where they exist (Windows has
> them, most modern POSIX systems have them) and using mutexes where
> they don't.

This is *neither* windows *nor* POSIX. Got it?

So long,
Thomas


== 5 of 12 ==
Date: Sat, Aug 1 2009 9:50 am
From: Amine

To make it more CLEARER...

I wrote:

" You have said complex ?

Is it just a false impression ?

Or is it the truth ?

Does the complex or difficul really exist ?

In my opinion:

Even if we don't comprehand the things

*NOTHING* is complex or difficul.

To say something is complex or difficul is just a FALSE impression

Why ?

Cause as soon as you COMPREHAND the thing *COMPLETLY*

The thing will become SIMPLE

and this final impression IS the REAL truth.

Hence, *NOTHING* is complex or difficul.

Think about it..."

To make it simple cause it's in *REALITY* simple:


If you have noticed i said

"Cause as soon as you COMPREHAND the thing *COMPLETLY*

The thing will become SIMPLE

and this final impression IS the REAL truth.

Hence, *NOTHING* is complex or difficul.
"

So:

If you don't comprehand a thing

and

you have a false impression of it

and

another person has comprehand *COMPLETLY* the same thing

where now the truth lies ?

In the complete understanding side ?

or in the not complete understanding side ?

The truth is:

It is in the understanding side

And since as i said before:

As soon as you COMPREHAND the thing *COMPLETLY*

The thing will become SIMPLE

and this final impression IS the REAL truth.

Hence, *NOTHING* is complex or difficul.


Regards,
Amine Moulay Ramdane


== 6 of 12 ==
Date: Sat, Aug 1 2009 10:02 am
From: Thomas Richter


Hi folks,

thanks to those who helped (and despite of those who only flamed) the
overall performance of this simple spinlock improved considerably now.

Here's the current solution for further thoughts and comments:

To obtain this futex, this is what we have currently:

static void inline FutexObtain(volatile int *fu)
{
asm volatile (
"\n"
"0:\n"
"\tmovl $0,%%eax\n"
"\tmovl $1,%%ebx\n"
"\tlock\n"
"\tcmpxchgl %%ebx,(%0)\n"
"\tje 1f\n"
"2:\n"
"\tpause\n"
"\tmovl (%0),%%eax\n"
"\ttest %%eax,%%eax\n"
"\tjne 2b\n"
"\tjmp 0b\n"
"1:\n"
:
: "r"(fu)
: "%eax", "%ebx" );
}

All this is pretty gnu-ish, the closest C approximation of this would be
(without the pause):

static void inline FutexObtain(volatile int *fu)
{
while(_InterlockedCompareExchange(fu,1,0)) {
while(*fu) { };
}
}

To release a futex, I'm now simply doing:

static inline void FutexRelease(volatile int *fu)
{
(*fu) = 0;
}

The futex variable itself is aligned to a 256 byte boundary, with the
next 256 bytes reserved from any other usage, and not touched by the
remaining program. This helped to improve the performance considerably.

So, thanks again to all those who did help instead of just flaming
around, thanks for the support, and if you see further chances to
improve this, please let me know.

So long,
Thomas


== 7 of 12 ==
Date: Sat, Aug 1 2009 10:32 am
From: "Chris M. Thomasson"


"David Schwartz" <davids@webmaster.com> wrote in message
news:c2aa7764-7da3-43ec-a1c7-fc280a843058@g1g2000pra.googlegroups.com...
On Aug 1, 3:30 am, "Chris M. Thomasson" <n...@spam.invalid> wrote:

> > __declspec(naked) void
> > spinlock_ia32_release(
> > spinlock_ia32* const self
> > ) {
> > _asm {
> > MOV EAX, [ESP + 4]
> > MOV DWORD PTR [EAX], 0
> > RET
> > }}

> This will deadlock on SMP PentiumPro systems due to an erratum. If the
> second MOV occurs just as the other CPU releases the cache line, it
> won't get invalidated and the next spinlock acquisition, if it takes
> place on that CPU, may erroneously spin. The deadlock won't break
> until the other CPU happens to try to acquire the spinlock.

Ah yes:

http://lkml.org/lkml/2008/1/21/366

I totally forgot about this nonsense. Thanks David for the reminder; I
appreciate it.


> I'm not sure anyone cares about SMP PPro systems anymore though.

Yeah. Well, I am not sure it's "worth" creating a workaround (e.g., using
XCHG to unlock)...

== 8 of 12 ==
Date: Sat, Aug 1 2009 10:54 am
From: "Chris M. Thomasson"


"Amine" <aminer@colba.net> wrote in message
news:4c3af672-cef1-4110-b103-8deb2bc6693d@j32g2000yqh.googlegroups.com...
>
>
>
> To make it more CLEARER...
>
> I wrote:
>
> " You have said complex ?
>
> Is it just a false impression ?
>
> Or is it the truth ?
>
> Does the complex or difficul really exist ?
>
> In my opinion:
>
> Even if we don't comprehand the things
>
> *NOTHING* is complex or difficul.
>
> To say something is complex or difficul is just a FALSE impression
>
> Why ?
>
> Cause as soon as you COMPREHAND the thing *COMPLETLY*
>
> The thing will become SIMPLE
[...]

Sometimes, it seems as if some things are too complex and/or difficult for
some people to completely comprehend.

== 9 of 12 ==
Date: Sat, Aug 1 2009 11:14 am
From: "Chris M. Thomasson"

"Thomas Richter" <thor@math.tu-berlin.de> wrote in message
news:h51sb6$aln$1@infosun2.rus.uni-stuttgart.de...
> Hi folks,
>
> thanks to those who helped (and despite of those who only flamed) the
> overall performance of this simple spinlock improved considerably now.
>
> Here's the current solution for further thoughts and comments:
>
> To obtain this futex, this is what we have currently:
>
> static void inline FutexObtain(volatile int *fu)
> {
> asm volatile (
> "\n"
> "0:\n"
> "\tmovl $0,%%eax\n"
> "\tmovl $1,%%ebx\n"
> "\tlock\n"
> "\tcmpxchgl %%ebx,(%0)\n"
> "\tje 1f\n"
> "2:\n"
> "\tpause\n"
> "\tmovl (%0),%%eax\n"
> "\ttest %%eax,%%eax\n"
> "\tjne 2b\n"
> "\tjmp 0b\n"
> "1:\n"
> :
> : "r"(fu)
> : "%eax", "%ebx" );
> }
>

[...]

I changed it to this in order to get it to compile under GCC:
_________________________________________________________________
__attribute__((always_inline))
static __inline__ void
FutexObtain(
volatile int *fu
) {
__asm__ __volatile__ (
"\n"
"0:\n"
"\tmovl $0,%%eax\n"
"\tmovl $1,%%ebx\n"
"\tlock\n"
"\tcmpxchgl %%ebx,(%0)\n"
"\tje 1f\n"
"2:\n"
"\tpause\n"
"\tmovl (%0),%%eax\n"
"\ttest %%eax,%%eax\n"
"\tjne 2b\n"
"\tjmp 0b\n"
"1:\n"
:
: "r"(fu)
: "cc", "memory", "%eax", "%ebx" );
}


__attribute__((always_inline))
static __inline__ void
FutexRelease(
volatile int *fu
) {
__asm__ __volatile__ ("" : : : "memory");
*fu = 0;
}
_________________________________________________________________


I would recommend that you add "memory" to the clobbers list to get a
compiler barrier. Perhaps add a dummy compiler barrier to the
`FutexRelease()' procedure as well.


> The futex variable itself is aligned to a 256 byte boundary, with the next
> 256 bytes reserved from any other usage, and not touched by the remaining
> program. This helped to improve the performance considerably.

I bet! False-sharing is a performance nightmare.


> So, thanks again to all those who did help instead of just flaming around,
> thanks for the support, and if you see further chances to improve this,
> please let me know.

No problem. AFAICT, the algorithm is looking pretty good now. Much better
than the previous one.

:^)

== 10 of 12 ==
Date: Sat, Aug 1 2009 4:01 pm
From: David Schwartz


On Aug 1, 9:30 am, Thomas Richter <t...@math.tu-berlin.de> wrote:

> Are you misreading my posts on purpose? Just to say this again: "My
> platform does not have mutexes available". Is that clear by now?

You have an SMP x86 platform that has no mutexes?! Seriously?

My apologies if I missed where you said that, but that's an extremely
unusual situation.

Do you have to support all x86 CPUs or just some subset?

DS


== 11 of 12 ==
Date: Sat, Aug 1 2009 4:10 pm
From: David Schwartz


On Aug 1, 10:32 am, "Chris M. Thomasson" <n...@spam.invalid> wrote:

> Yeah. Well, I am not sure it's "worth" creating a workaround (e.g., using
> XCHG to unlock)...

My code had such a workaround as soon as this erratum was discovered.
I removed the workaround for the erratum (and changed the code to
refuse to run on SMP PPro systems) in early 2008.

I'm looking forward to the day I can completely drop support for all
pre-P3 systems.

The ability to inline the release of a spinlock is a big win, so
making code conditional on CPU type is not really doable.

Though you could at least catch illegal instruction faults and
dynamically patch 'ud2' to 'lock' on SMP systems and 'nop' on UP
systems if you really wanted to. This means you can't use 'xchg' and
have to use something like 'cmpxchgl' instead though. Since most
systems are SMP these days, this is probably another obsolete
workaround/optimization.

DS


== 12 of 12 ==
Date: Sat, Aug 1 2009 4:30 pm
From: David Schwartz


On Aug 1, 10:02 am, Thomas Richter <t...@math.tu-berlin.de> wrote:

> thanks to those who helped (and despite of those who only flamed) the

I apologize for holding you back by pointing out what was wrong with
your code.

> static void inline FutexObtain(volatile int *fu)
> {
>    asm volatile (
>                 "\n"
>                 "0:\n"
>                 "\tmovl $0,%%eax\n"
>                 "\tmovl $1,%%ebx\n"
>                 "\tlock\n"
>                 "\tcmpxchgl %%ebx,(%0)\n"
>                 "\tje 1f\n"
>                 "2:\n"
>                 "\tpause\n"
>                 "\tmovl (%0),%%eax\n"
>                 "\ttest %%eax,%%eax\n"
>                 "\tjne 2b\n"
>                 "\tjmp 0b\n"
>                 "1:\n"
>                 :
>                 : "r"(fu)
>                 : "%eax", "%ebx" );
>
> }

This looks pretty good, but it's a highly-specialized spinlock. It
will likely outperform more typical spinlocks for the use cases it is
good for, but will fail horribly if misused. That's fine, so long as
you're careful not to misuse it.

Typical spinlocks, for example, spin for only a limited amount of
time. This spinlock will spin forever. Typical spinlocks have
safeguards against being used on UP machines. This doesn't. Typical
spinlocks have safeguards against scenarios where a thread is
descheduled while holding a spinlock and then other threads waste all
their timeslices on all CPUs spinning on a spinlock that can't be
released because the only thread that can release it can't get to the
CPU because other threads with higher dynamic priorities are spinning
on it.

So long as you understand these limitations and use this code only for
the cases in which it is suitable, it should do quite well. You should
use it in cases where it is not expected to ever be contested very
much -- where the lock is needed just on the off chance two threads
happen to try to do the same thing at the same time. You should not
use it for cases where more threads than there are CPUs are likely to
be competing for the same spinlock. You should not use it for locks
that are held for more than about a thousand instructions. You should
not use it among threads of different static priorities.

By not dealing with any of these cases, you can get more performance
in appropriate cases. However, this is not very user-friendly -- you
have to know what you're doing to use this, and changing conditions
can potentially bite you.

DS

==============================================================================
TOPIC: Lock-free threadpool 1.03 and patch...
http://groups.google.com/group/comp.programming.threads/t/7a784a0ad7f4ce87?hl=en
==============================================================================

== 1 of 1 ==
Date: Sat, Aug 1 2009 3:23 am
From: "Chris M. Thomasson"


"Chris M. Thomasson" <no@spam.invalid> wrote in message
news:h4o05p$1ouj$1@news.ett.com.ua...
> "Amine" <aminer@colba.net> wrote in message
> news:6dff72c7-6d5a-4d29-952e-4907f71995cf@o6g2000yqj.googlegroups.com...
>>
>> Hello,
>>
>> I have added PushInQueue1() and PushInQueue2()
>> to the Lockfree threadpool. If for example you have two
>> super fast connection and you want to have more throuput
>> and minimize contention you will use those two methods
>> on each worker thread.
>>
>> Also, i have patched it and added in the destructor
>> the following:
>> SetLength(FThreads, 0);
>> SetLength(Queues, 0);
>>
>> To free the memory of the dynamic arrays.
>>
>> Now it is working perfectly and version 1.03 is online now.
>>
>> Welcome: http://www.colba.net/~aminer/
>
> How are you handling the case in which a queue is full/empty? It seems
> like your busy-waiting. Unless I am missing something vital, this is a
> troubling practice indeed...

Have you given some thought as to how your going to correct this busy
waiting problem? If I am missing something, please correct me as I enjoy
learning new things.


==============================================================================
TOPIC: weird thread behavior on itanium/hp-ux with pthread
http://groups.google.com/group/comp.programming.threads/t/b2b5d744b99b760c?hl=en
==============================================================================

== 1 of 1 ==
Date: Sat, Aug 1 2009 4:32 am
From: David Schwartz


On Jul 28, 6:07 pm, Jeremy <fc2...@gmail.com> wrote:

> however, using tusc, we observed that thread 0 did go to sleep first,
> and 'something else' did happen afterwards, but thread 0 did not wake
> up until it timed out.

You are misreading the output of tusc. It is not telling that thread 0
did go to sleep first. It is telling you that thread 0 *decided* to go
to sleep first. It may have actually gone to sleep significantly
later. Since "something_happened" occurs outside of the mutex, it is
impossible to tell from the tusc output whether thread 0 actually did
go to sleep before or after something happened. However, the next
mutex acquisition in the other thread cannot occur until thread 0 goes
to sleep, because going to sleep and releasing the mutex is atomic.

DS

==============================================================================
TOPIC: NOTHING is complex or difficul...
http://groups.google.com/group/comp.programming.threads/t/8f4050fcf0ebf6ae?hl=en
==============================================================================

== 1 of 10 ==
Date: Sat, Aug 1 2009 11:36 am
From: Amine


David Schwartz wrote:
> [...]
> Spinlocks are phenomenally complex. You have to have a very
> deep understanding of the CPU internals to get them right.


I say that: *NOTHING* is complex or difficulT


My prof:

You have said complex ?

Is it just a false impression ?

Or is it the truth ?

Does the complex or difficul really exist ?

Even if we don't comprehend the things

*NOTHING* is complex or difficul.

To say something is complex or difficul is just a FALSE impression

Why ?

If you don't comprehend a thing

and

you have a false impression of it

and

another person has comprehend *COMPLETLY* the same thing

where now the truth lies ?

In the complete understanding side ?

or in the not complete understanding side ?

The truth is:

It is in the understanding side.

And

Since as soon as you COMPREHEND the thing *COMPLETLY*

The thing will become SIMPLE

and this final impression IS the REAL truth.

Hence, *NOTHING* is complex or difficul.


And dont forget to read my poems:

http://www.colba.net/~aminer/


Regards,
Amine Moulay Ramdane


== 2 of 10 ==
Date: Sat, Aug 1 2009 12:01 pm
From: Amine


On Aug 1, 2:36 pm, Amine <ami...@colba.net> wrote:
> David Schwartz wrote:
> > [...]
> > Spinlocks are phenomenally complex. You have to have a very
> > deep understanding of the CPU internals to get them right.
>
> I say that: *NOTHING* is complex or difficulT
>
> My prof:
>
> You have said complex ?
>
> Is it just a false impression ?
>
> Or is it the truth ?
>
> Does the complex or difficul really exist ?
>
> Even if we don't comprehend the things
>
> *NOTHING* is complex or difficul.
>
> To say something is complex or difficul is just a FALSE impression
>
> Why ?
>
> If you don't comprehend a thing
>
> and
>
> you have a false impression of it
>
> and
>
> another person has comprehend *COMPLETLY* the same thing
>
> where now the truth lies ?
>
> In the complete understanding side ?
>
> or in the not complete understanding side ?
>
> The truth is:
>
> It is in the understanding side.
>
> And
>
> Since as soon as you COMPREHEND the thing *COMPLETLY*
>
> The thing will become SIMPLE
>
> and this final impression IS the REAL truth.
>
> Hence, *NOTHING* is complex or difficul.
>
> And dont forget to read my poems:
>
> http://www.colba.net/~aminer/
>
> Regards,
> Amine Moulay Ramdane


Now if someone have FINALLY completly comprehend the thing

but he still say to to you something liket:

"I have finally understand completly the thing ,
but i have found the thing complex and difficult !"


Is his affirmation false or true ?

If you have noticed when he said :
"...i have found the thing complex and difficul !"

that's just his recalling of past memory IMPRESSIONS
that are still *FALSE*.

So my above proof still stand in this case also.

Regards,
Amine.

== 3 of 10 ==
Date: Sat, Aug 1 2009 12:17 pm
From: Amine


"Any intelligent fool can make things bigger and more complex...
It takes a touch of genius - and a lot of courage to move in the
opposite direction."
Albert Einstein


And i have tried to give the proof of my following affirmation:

"NOTHING is complex or difficult"


And dont forget to read my poems:

http://www.colba.net/~aminer/


:)

Regards,
Amine Moulay Ramdane

On Aug 1, 3:01 pm, Amine <ami...@colba.net> wrote:
> On Aug 1, 2:36 pm, Amine <ami...@colba.net> wrote:
>
>
>
>
>
> > David Schwartz wrote:
> > > [...]
> > > Spinlocks are phenomenally complex. You have to have a very
> > > deep understanding of the CPU internals to get them right.
>
> > I say that: *NOTHING* is complex or difficulT
>
> > My prof:
>
> > You have said complex ?
>
> > Is it just a false impression ?
>
> > Or is it the truth ?
>
> > Does the complex or difficul really exist ?
>
> > Even if we don't comprehend the things
>
> > *NOTHING* is complex or difficul.
>
> > To say something is complex or difficul is just a FALSE impression
>
> > Why ?
>
> > If you don't comprehend a thing
>
> > and
>
> > you have a false impression of it
>
> > and
>
> > another person has comprehend *COMPLETLY* the same thing
>
> > where now the truth lies ?
>
> > In the complete understanding side ?
>
> > or in the not complete understanding side ?
>
> > The truth is:
>
> > It is in the understanding side.
>
> > And
>
> > Since as soon as you COMPREHEND the thing *COMPLETLY*
>
> > The thing will become SIMPLE
>
> > and this final impression IS the REAL truth.
>
> > Hence, *NOTHING* is complex or difficul.
>
> > And dont forget to read my poems:
>
> >http://www.colba.net/~aminer/
>
> > Regards,
> > Amine Moulay Ramdane
>
> Now if someone have FINALLY completly comprehend the thing
>
> but he still say to to you something liket:
>
> "I have finally understand completly the thing ,
> but i have found the thing complex and difficult !"
>
> Is his affirmation false or true ?
>
> If you have noticed when he said :
>  "...i have found the thing complex and difficul !"
>
> that's just his recalling of past memory IMPRESSIONS
> that are still *FALSE*.
>
> So my above proof still stand in this case also.
>
> Regards,
> Amine.- Hide quoted text -
>
> - Show quoted text -

== 4 of 10 ==
Date: Sat, Aug 1 2009 3:57 pm
From: David Schwartz


On Aug 1, 11:36 am, Amine <ami...@colba.net> wrote:

> Since as soon as you COMPREHEND the thing *COMPLETLY*

> The thing will become SIMPLE

If the thing can *become* simple, it must before have been difficult.

> and this final impression IS the REAL truth.
>
> Hence, *NOTHING* is complex or difficul.

You've simply shown that you don't mean what everyone else means by
"complex" or "difficult". If it takes massive effort to understand
something, that thing is "difficult", regardless of how it appears
once that understanding is complete. That's what "difficult" means.

If some huge effort or complex process is required to make something
simple, then before it was made simple, it was difficult.

You could equally argue that nothing is black since it can be painted
red.

DS


== 5 of 10 ==
Date: Sat, Aug 1 2009 5:02 pm
From: Amine

On Aug 1, 6:57 pm, David Schwartz <dav...@webmaster.com> wrote:
> On Aug 1, 11:36 am, Amine <ami...@colba.net> wrote:
>
> > Since as soon as you COMPREHEND the thing *COMPLETLY*
> > The thing will become SIMPLE
>
> If the thing can *become* simple, it must before have been difficult.


No you are not right my dear David Schwartz

Please follow with me:

I wrote this:
>Now if someone have FINALLY completly comprehend the thing

>but he still say to you something like:

>"I have finally understand completly the thing ,
>but i have found the thing complex and difficult !"

>Is his affirmation false or true ?

>If you have noticed when he said :
> "...i have found the thing complex and difficul !"

>that's just his recalling of past memory IMPRESSIONS
>that are still *FALSE*.

>So my above proof still stand in this case also.


And David Schwartz responded:
> If the thing can *become* simple, it must before have been difficult.

The thing have become SIMPLE: that's TRUE.

But before: it was just SUBJECTIVE and a FALSE impression
since it was not *COMPLETLY* comprehended.

So that's why his affirmation:
"...i have found the thing complex and difficult !"

Was FALSE.

and his FINAL affirmation:

"I have finally understand completly the thing"

IS the TRUTH.

It imply:

He have finally COMPLETLY UNDERSTAND the thing

and

The thing has become SIMPLE and NOT difficult

and

The thing was not at all difficul before.

Think about it....


Regards,
Amine Moulay Ramdane.


== 6 of 10 ==
Date: Sat, Aug 1 2009 5:22 pm
From: Amine


On Aug 1, 8:02 pm, Amine <ami...@colba.net> wrote:
> On Aug 1, 6:57 pm, David Schwartz <dav...@webmaster.com> wrote:
>
> > On Aug 1, 11:36 am, Amine <ami...@colba.net> wrote:
>
> > > Since as soon as you COMPREHEND the thing *COMPLETLY*
> > > The thing will become SIMPLE
>
> > If the thing can *become* simple, it must before have been difficult.
>
> No you are not right my dear David Schwartz
>
> Please follow with me:
>
> I wrote this:
>
> >Now if someone have FINALLY completly comprehend the thing
> >but he still say to you something like:
> >"I have finally understand completly the thing ,
> >but i have found the thing complex and difficult !"
> >Is his affirmation false or true ?
> >If you have noticed when he said :
> > "...i have found the thing complex and difficul !"
> >that's just his recalling of past memory IMPRESSIONS
> >that are still *FALSE*.
> >So my above proof still stand in this case also.
>
> And David Schwartz responded:
>
> > If the thing can *become* simple, it must before have been difficult.
>
> The thing  have become SIMPLE: that's TRUE.
>
> But before: it was just SUBJECTIVE and a FALSE impression
> since it was not *COMPLETLY* comprehended.
>
> So that's why his affirmation:
>  "...i have found the thing complex and difficult !"
>
> Was FALSE.
>
> and his FINAL affirmation:
>
> "I have finally understand completly the thing"
>
> IS the TRUTH.
>
> It imply:
>
> He have finally COMPLETLY UNDERSTAND the thing
>
> and
>
> The thing has become SIMPLE and NOT difficult
>
> and
>
> The thing was not at all difficul before.


And the thing has become SIMPLE and NOT difficult
and that's the TRUTH: that the thing is NOT difficult.

Since if you have read carefully i wrote in my proof
:
"where now the truth lies ?
In the complete understanding side ?
or in the not complete understanding side ?
The truth is:
It is in the understanding side."


So my proof still stand.

Regards,
Amine Moulay Ramdane.

>
> Think about it....
>
> Regards,
> Amine Moulay Ramdane.

== 7 of 10 ==
Date: Sat, Aug 1 2009 5:37 pm
From: Amine


On Aug 1, 8:22 pm, Amine <ami...@colba.net> wrote:
> On Aug 1, 8:02 pm, Amine <ami...@colba.net> wrote:
>
>
>
>
>
> > On Aug 1, 6:57 pm, David Schwartz <dav...@webmaster.com> wrote:
>
> > > On Aug 1, 11:36 am, Amine <ami...@colba.net> wrote:
>
> > > > Since as soon as you COMPREHEND the thing *COMPLETLY*
> > > > The thing will become SIMPLE
>
> > > If the thing can *become* simple, it must before have been difficult.
>
> > No you are not right my dear David Schwartz
>
> > Please follow with me:
>
> > I wrote this:
>
> > >Now if someone have FINALLY completly comprehend the thing
> > >but he still say to you something like:
> > >"I have finally understand completly the thing ,
> > >but i have found the thing complex and difficult !"
> > >Is his affirmation false or true ?
> > >If you have noticed when he said :
> > > "...i have found the thing complex and difficul !"
> > >that's just his recalling of past memory IMPRESSIONS
> > >that are still *FALSE*.
> > >So my above proof still stand in this case also.
>
> > And David Schwartz responded:
>
> > > If the thing can *become* simple, it must before have been difficult.
>
> > The thing  have become SIMPLE: that's TRUE.
>
> > But before: it was just SUBJECTIVE and a FALSE impression
> > since it was not *COMPLETLY* comprehended.
>
> > So that's why his affirmation:
> >  "...i have found the thing complex and difficult !"
>
> > Was FALSE.
>
> > and his FINAL affirmation:
>
> > "I have finally understand completly the thing"
>
> > IS the TRUTH.
>
> > It imply:
>
> > He have finally COMPLETLY UNDERSTAND the thing
>
> > and
>
> > The thing has become SIMPLE and NOT difficult
>
> > and
>
> > The thing was not at all difficul before.
>
> And the thing has become SIMPLE and NOT difficult
> and that's the TRUTH: that the thing is NOT difficult.

I correct:

And the thing has become SIMPLE and NOT difficult

and

if you have read carefully the part in my proof
(please reread again my proof):
 :
"where now the truth lies ?
In the complete understanding side ?
or in the not complete understanding side ?
The truth is:
It is in the understanding side."


this imply:

The thing is NOT difficult.


And my proof still stand.

Regards,
Amine Moulay Ramdane.

> So my proof still stand.
>
> Regards,
> Amine Moulay Ramdane.
>
>
>
>
>
> > Think about it....
>
> > Regards,
> > Amine Moulay Ramdane.- Hide quoted text -
>
> - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

== 8 of 10 ==
Date: Sat, Aug 1 2009 5:54 pm
From: Amine


On Aug 1, 8:37 pm, Amine <ami...@colba.net> wrote:
> On Aug 1, 8:22 pm, Amine <ami...@colba.net> wrote:
>
>
>
>
>
> > On Aug 1, 8:02 pm, Amine <ami...@colba.net> wrote:
>
> > > On Aug 1, 6:57 pm, David Schwartz <dav...@webmaster.com> wrote:
>
> > > > On Aug 1, 11:36 am, Amine <ami...@colba.net> wrote:
>
> > > > > Since as soon as you COMPREHEND the thing *COMPLETLY*
> > > > > The thing will become SIMPLE
>
> > > > If the thing can *become* simple, it must before have been difficult.
>
> > > No you are not right my dear David Schwartz
>
> > > Please follow with me:
>
> > > I wrote this:
>
> > > >Now if someone have FINALLY completly comprehend the thing
> > > >but he still say to you something like:
> > > >"I have finally understand completly the thing ,
> > > >but i have found the thing complex and difficult !"
> > > >Is his affirmation false or true ?
> > > >If you have noticed when he said :
> > > > "...i have found the thing complex and difficul !"
> > > >that's just his recalling of past memory IMPRESSIONS
> > > >that are still *FALSE*.
> > > >So my above proof still stand in this case also.
>
> > > And David Schwartz responded:
>
> > > > If the thing can *become* simple, it must before have been difficult.
>
> > > The thing  have become SIMPLE: that's TRUE.
>
> > > But before: it was just SUBJECTIVE and a FALSE impression
> > > since it was not *COMPLETLY* comprehended.
>
> > > So that's why his affirmation:
> > >  "...i have found the thing complex and difficult !"
>
> > > Was FALSE.
>
> > > and his FINAL affirmation:
>
> > > "I have finally understand completly the thing"
>
> > > IS the TRUTH.
>
> > > It imply:
>
> > > He have finally COMPLETLY UNDERSTAND the thing
>
> > > and
>
> > > The thing has become SIMPLE and NOT difficult
>
> > > and
>
> > > The thing was not at all difficul before.
>
> > And the thing has become SIMPLE and NOT difficult
> > and that's the TRUTH: that the thing is NOT difficult.
>
> I correct:
>
> And the thing has become SIMPLE and NOT difficult
>
> and
>
> if you have read carefully the part in my proof
> (please reread again my proof):
>   :
>  "where now the truth lies ?
>  In the complete understanding side ?
>  or in the not complete understanding side ?
>  The truth is:
>  It is in the understanding side."
>
> this imply:
>
> The thing is NOT difficult.

Cause the final information: the thing has become
SIMPLE and NOT difficult

is OBJECTIVE

and

It's the TRUTH.

That's all.


Regards,
Amine.


:


>
> And my proof still stand.
>
> Regards,
> Amine Moulay Ramdane.
>
>
>
> > So my proof still stand.
>
> > Regards,
> > Amine Moulay Ramdane.
>
> > > Think about it....
>
> > > Regards,
> > > Amine Moulay Ramdane.- Hide quoted text -
>
> > - Show quoted text -- Hide quoted text -
>
> > - Show quoted text -- Hide quoted text -
>
> - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

== 9 of 10 ==
Date: Sat, Aug 1 2009 6:34 pm
From: David Schwartz


On Aug 1, 5:02 pm, Amine <ami...@colba.net> wrote:

> > If the thing can *become* simple, it must before have been difficult.

> No you are not right my dear David Schwartz

Yes, I am right.

> Please follow with me:
>
> I wrote this:
>
> >Now if someone have FINALLY completly comprehend the thing
> >but he still say to you something like:
> >"I have finally understand completly the thing ,
> >but i have found the thing complex and difficult !"
> >Is his affirmation false or true ?
> >If you have noticed when he said :
> > "...i have found the thing complex and difficul !"
> >that's just his recalling of past memory IMPRESSIONS
> >that are still *FALSE*.
> >So my above proof still stand in this case also.
>
> And David Schwartz responded:
>
> > If the thing can *become* simple, it must before have been difficult.
>
> The thing  have become SIMPLE: that's TRUE.
>
> But before: it was just SUBJECTIVE and a FALSE impression
> since it was not *COMPLETLY* comprehended.

Right, and that is what difficult means.

> So that's why his affirmation:
>  "...i have found the thing complex and difficult !"
>
> Was FALSE.

No, it was true.

> and his FINAL affirmation:
>
> "I have finally understand completly the thing"
>
> IS the TRUTH.

Right, and THAT IS WHAT DIFFICULT MEANS.

> It imply:
>
> He have finally COMPLETLY UNDERSTAND the thing
>
> and
>
> The thing has become SIMPLE and NOT difficult
>
> and
>
> The thing was not at all difficul before.
>
> Think about it....

I have. You are wrong. When we say something is difficult, we *mean*
that complex effort is required to understand it.

You keep saying that some process shows it is not difficult. But
"difficult" means that such a process is required to understand it.

If it were in fact not difficult, no such process would be necessary.

DS


== 10 of 10 ==
Date: Sat, Aug 1 2009 6:36 pm
From: David Schwartz


On Aug 1, 5:54 pm, Amine <ami...@colba.net> wrote:

Are you mentally defective in some way? Seriously.

> Cause the final information: the thing has become
> SIMPLE and NOT difficult

Right, and that such a thing is required is what it means to call
something "difficult".

> is OBJECTIVE
>
> and
>
> It's the TRUTH.
>
> That's all.

Right, and that's what it means to say something is "difficult".

When I say "X is difficult", what I mean is that just such a process
is required in order to understand it. Whatever you realize at the
end, the fact that you had to travel the path to get to the end proves
that it was in fact difficult because that is what the word
"difficult" means.

DS


==============================================================================

You received this message because you are subscribed to the Google Groups "comp.programming.threads"
group.

To post to this group, visit http://groups.google.com/group/comp.programming.threads?hl=en

To unsubscribe from this group, send email to comp.programming.threads+unsubscribe@googlegroups.com

To change the way you get mail from this group, visit:
http://groups.google.com/group/comp.programming.threads/subscribe?hl=en

To report abuse, send email explaining the problem to abuse@googlegroups.com

==============================================================================
Google Groups: http://groups.google.com/?hl=en

No comments: